객체 지향 설계(OOD : Object Oriented Design)의 5개 원칙 SOLID는 아래 5가지 원칙의 앞 머리 알파벳을 따서 부르는 이름입니다.
- SRP(Single Responsibility Principle) : 단일 책임 원칙
- OCP(Open Closed Principle) : 개방 폐쇄 원칙
- LSP(Liskov Substitution Principle) : 리스코프 치환 원칙
- ISP (Interface Segregation Principle) : 인터페이스 분리 원칙
- DIP (Dependency Inversion Principle) : 의존 역전 원칙
SRP(Single Responsibility Principle) : 단일 책임 원칙
어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다.
- 로버트 C. 마틴 -
남자 클래스와 의존 관계에 있는 다른 클래스들
남자 클래스에 단일 책임 원칙을 적용해 여러 개의 클래스로 분리
OCP(Open Closed Principle) : 개방 폐쇄 원칙
소프트웨어 엔티티(클래스, 모듈, 함수 등)는 확장에 대해서는 열려 있어야 하지만
변경에 대해서는 닫혀 있어야 한다.
- 로버트 C. 마틴-
개방 폐쇄 원칙에 위배되는 경우
개방 폐쇄 원칙을 적용한 경우
개방 폐쇄 원칙을 적용한 예시 : JDBC
LSP(Liskov Substitution Principle) : 리스코프 치환 원칙
서브 타입은 언제나 자신의 기반 타입(base type)으로 교체할 수 있어야 한다. 하위 클래스의 인스턴스는 상위형 개체 참조 변수에 대입해 상위 클래스의 인스턴스 역할을 하는 데 문제가 없어야 한다.
- 로버트 C. 마틴 -
리스코프 치환 위반 원칙 사례 : 계층도/조직도
리스코프 치환 원칙 적용 사례 : 분류도
ISP (Interface Segregation Principle) : 인터페이스 분리 원칙
클라이언트는 자신이 사용하지 않는 메서드에 의존 관계를 맺으면 안 된다.
- 로버트 C. 마틴 -
다양한 책임을 가진 남자 클래스
단일 책임 원칙을 적용해 남자 클래스를 단일 책임을 가진 여러 클래스로 분리
인터페이스 분할 원칙을 적용한 남자 클래스
DIP (Dependency Inversion Principle) : 의존 역전 원칙
"고차원 모듈은 저차원 모듈에 의존하면 안 된다. 이 두 모듈 모두 다른 추상화된 것에 의존해야 한다."
"추상화된 것은 구체적인 것에 의존하면 안 된다. 구체적인 것이 추상화된 것에 의존해야 한다."
"자주 변경되는 구체(Concrete) 클래스에 의존하지 마라"
- 로버트 C. 마틴 -
의존 역전 원칙 적용 전 (자주 사용되는 구체 클래스에 의존)
의존 역전 원칙 적용 후
'Dev Story > dev' 카테고리의 다른 글
[PostgreSQL] pg_terminate_backend (0) | 2022.01.26 |
---|---|
[maven] ArtifactDescriptorException (0) | 2014.03.11 |
[Eclipse] 강제종료 후 실행이 안될 때 (10) | 2014.01.23 |
Eclipse에서 SVN Connector 플러그인 수동 설치 (0) | 2013.11.26 |
[springframework 3.1] Redirect - FlashMap, RedirectAttributes (0) | 2013.04.09 |