http://www.yes24.com/Product/Goods/17350624
(스프링 입문을 위한 자바 객체 지향의 원리와 이해, 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/리스코프_치환_원칙
하위형에서 선행 조건은 강화될 수 없다.
하위형에서 후행 조건은 약화될 수 없다.
하위형에서 상위형의 불변 조건은 반드시 유지되어야 한다.
ISP(Interface Segregation Principle): 인터페이스 분리 원칙
클라이언트는 자신이 사용하지 않는 메소드에 의존 관계를 맺으면 안 된다.
DIP(Dependency Inversion Principle): 의존 역전 원칙
고차원 모듈이 저차원 모듈에 의존하면 안 된다.
구체적인 것은 추상화된 것에 의존해야 한다.
자주 변경되는 구체 클래스에 의존하지 마라.
= 자신보다 변하기 쉬운 것에 의존하지 마라
꼭 읽었으면 하는 책
Head FIrst Design Patterns
토비의 스프링
도메인 주도 설계란 무엇인가?
도메인 주도 설계
'책 > 기술 관련' 카테고리의 다른 글
자바 객체지향의 원리와 이해 07. 스프링 삼각형과 설정 정보 (0) | 2022.02.19 |
---|---|
자바 객체지향의 원리와 이해 06. 디자인 패턴 (0) | 2022.02.10 |
자바 객체지향의 원리와 이해 03. 자바와 객체 지향 (0) | 2022.02.08 |
자바 객체지향의 원리와 이해 02. 자바와 절차적/구조적 프로그래밍 (0) | 2022.02.07 |