책/기술 관련

자바 객체지향의 원리와 이해 05. SOLID

Mev01 2022. 2. 10. 21:49

http://www.yes24.com/Product/Goods/17350624

 

스프링 입문을 위한 자바 객체 지향의 원리와 이해 - YES24

자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량 애플리케이션 프레임워크인 스프링은 자바와 객체 지향이라는 기반 위에 굳건히 세워져 있다. 따라서 스프링을 제대로 이해하고 활용

www.yes24.com

(스프링 입문을 위한 자바 객체 지향의 원리와 이해, 2015)을 학습하고 개인 학습용으로 정리한 내용입니다.

 

 

SRP(Single Responsibility Rrinciple) 단일 책임원칙


어떤 클래스를 변경하는 이유는 하나뿐이다.

 

이 원칙은 클래스뿐 아니라 속성, 메서드, 컴포넌트, 프레임워크 등에도 적용할 수 있다.

애플리케이션의 경계를 정하고 추상화를 통해 클래스들을 선별하고 속성과 메서드를 설계할 때 반드시 단일 책임 원칙을 고려하는 습관을 들여야 한다.

 

SRP 위반 사항

  • 여러 원인에 한 클래스가 변경될 때
  • 하나의 이유에 대한 여러 변경 대상이 존재할 때

 

 

OCP(Open Closed Principle): 개방 폐쇄 원칙


자신의 확장에는 열려 있어야 하고 주변의 변화에는 닫혀 있어야 한다.

 

개방 폐쇄 원칙을 무시하면 객체 지향 프로그래밍의 장점인 유연성, 재사용성, 유지보수성 등을 얻을 수 없다.

 

주의점

  • 확장되는 것과 변경되지 않는 모듈을 분리하는 과정에서 크기 조절에 실패하면 더 복잡해질 수 있다.
  • 인터페이스를 정의할 때 변경되지 않도록 여러 경우의 수에 대한 고려와 예측이 필요하다.
  • 클라이언트가 자신이 하는 일을 알기 위해서 행위에 대한 본질적인 정의를 통해 인터페이스를 식별해야 한다.

 

 

LSP(Liskov Substitution Principle): 리스코프 치환 원칙


서브 타입은 언제나 자신의 기반 타입으로 교체할 수 있어야 한다.
= 하위 클래스의 인스턴스는 상위형 객체 참조 변수에 대입해 상위 클래스의 인스턴스 역할을 하는데 문제가 없어야 한다.

 

하위 클래스 is kind of 상위 클래스 - 하위 분류는 상위 분류의 한 종류이다.

구현 클래스 is able to 인터페이스 - 구현 분류는 인터페이스 할 수 있어야 한다.

 

 

http://ko.wikipedia.org/wiki/리스코프_치환_원칙 

 

리스코프 치환 원칙 - 위키백과, 우리 모두의 백과사전

치환성(영어: substitutability)은 객체 지향 프로그래밍 원칙이다. 컴퓨터 프로그램에서 자료형 S {\displaystyle S} 가 자료형 T {\displaystyle T} 의 하위형이라면 필요한 프로그램의 속성(정확성, 수행하는

ko.wikipedia.org

하위형에서 선행 조건은 강화될 수 없다.

하위형에서 후행 조건은 약화될 수 없다.

하위형에서 상위형의 불변 조건은 반드시 유지되어야 한다.

 

 

ISP(Interface Segregation Principle): 인터페이스 분리 원칙


클라이언트는 자신이 사용하지 않는 메소드에 의존 관계를 맺으면 안 된다.

 

 

DIP(Dependency Inversion Principle): 의존 역전 원칙


고차원 모듈이 저차원 모듈에 의존하면 안 된다.
구체적인 것은 추상화된 것에 의존해야 한다.
자주 변경되는 구체 클래스에 의존하지 마라.
= 자신보다 변하기 쉬운 것에 의존하지 마라

 

 

꼭 읽었으면 하는 책

Head FIrst Design Patterns

토비의 스프링

도메인 주도 설계란 무엇인가?

도메인 주도 설계