728x90
반응형

SOLID

  • SRP(Single Respinsibility principle): 단일 책임 원칙
  • OCP(Open/Closed Principle): 개방-폐쇄 원칙
  • LSP(Liskov Substitution Principle): 리스코프 치환 원칙
  • ISP(Interface Segregation Principle): 인터페이스 분리 원칙
  • DIP(Dependency Inversion Principle): 의존관계 역전 원칙

 

SRP

  • 한 클래스는 하나의 책임만 가져야한다.
  • ex) 특정 코드(UI 변경 등) 수정 시 수정/변경해야하는 코드가 적을수록 단일 책임 원칙을 잘 따른 것

 

OCP

  • 확장에는 열려(OPEN) 있어야하고 변경에는 닫혀(CLOSED) 있어야 한다.
  • ex) 인터페이스를 통해 새로운 클래스 생성하여 새로운 기능을 구현할 시 개방 폐쇄 원칙 잘 따른 것

 

LSP

  • 프로그램의 정확성을 떨어뜨리지 않고 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
  • ex) 리모콘 인터페이스의 + 버튼은 무조건 올리는 기능, 내려가면 리스코프 치환 원칙을 위반한 것

 

ISP

  • 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
  • ex)  빔프로젝트 인터페이스와 리모콘 인터페이스가 분리되어 있으면 빔프로젝트 인터페이스 자체가 변해도 리모콘 인터페이스에 영향을 주지 않기 때문에 사용자(클라이언트) 입장에서 혼동이 일어나지 않는다.

 

DIP

  • 구현 클래스에 의존하는(바라보는) 것이 아니라 인터페이스에 의존해야한다.
  • ex)  붕어빵 기계를 의존하여 변경하는 것이 편하지 붕어빵 자체를 변경하는 것은 어렵다.

 

정리

  • 객체 지향의 핵심은 다형성이다.
  • 하지만 다형성만으로는 OCP와 DIP 원칙을 모두 지킬 수 없다.
728x90
반응형