S. SRP ( 단일 책임 원칙 )
- 클래스는 하나의 책임만 가진다.
- 어떤 변화에 의해 클래스를 변경해야 되는 이유는 하나여야 함
- 적용방법 : 리팩토링
O. OCP ( 개방 폐쇄 원칙 )
- 확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다.
- 요구사항의 변경이나 추가가 발생해도 기존 구성요소는 수정이 일어나지 않아야 하며, 기존 구성요소를 쉽게 확장해서 사용할 수 있어야 함
- OCP를 가능하게 하는 것은 추상화와 다형성
- 적용방법 : 인터페이스 활용 (구현보다 정의된 인터페이스에 의존하도록 코드 작성)
L. LSP ( 리스코프 치환 원칙 )
- 서브 클래스는 언제나 슈퍼 클래스로 교체 될 수 있어야 한다. (업캐스팅을 해도 문제가 되지 않아야 한다.)
- 서브 클래스가 확장에 대한 인터페이스를 준수해야 함
- 다형성을 통한 확장의 원리인 OCP를 제공 (LSP는 OCP 구성하는 구조가 됨)
- 적용방법 : 인터페이스 활용, 구현 상속 활용
I. ISP ( 인터페이스 분리 원칙 )
- 클래스는 자신이 사용하지 않는 메소드는 구현하지 않아야 한다. (자신이 사용하지 않는 기능에 의존하지 않아야 함)
- SRP가 클래스의 단일 책임을 강조한다면 ISP는 인터페이스의 단일 책임을 강조함
- 적용방법 : 클래스 인터페이스를 통한 분리(상속), 객체 인터페이스를 통한 분리(위임)
D. DIP ( 의존성 역전 원칙 )
- 하위 레벨 모듈의 변경이 상위 레벨 모듈의 변경을 요구하는 위계 관계를 끊어야 한다.
- 키워드는 IOC, 훅 메소드, 확장성
- 복잡한 컴포넌트 간의 커뮤니케이션을 단순화하기 위한 원칙
- 적용방법 : Layering
[참조]
http://www.nextree.co.kr/p6960/
https://wkdtjsgur100.github.io/solid-principle/
'프로그래밍' 카테고리의 다른 글
HTTP/2 (0) | 2019.03.04 |
---|---|
HTTP와 HTTPS의 차이 (0) | 2019.03.04 |
MVC, MVP, MVVM 패턴 (0) | 2018.10.08 |
Blocking vs NonBlocking , Synchronous vs Asynchronous (0) | 2018.07.17 |
circuit breaker (0) | 2017.09.25 |