본문 바로가기

프로그래밍

객체지향 5대 원칙 - SOLID

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