• 이 부분은 1회차 지만 신경써서 머릿속에 넣어본다. 실제로 설계하거나 구현 할 때 적절한 모델링(추상화)와 인터페이스의 분리에 신경쓸 필요가 있겠다. 그러나 SRP-ISP와 OCP-DIP 관계의 뉘앙스 차이는 아직 잘 모르겠다.

객체지향 설계의 5원칙

  1. SRP; 단일 책임 원칙
  2. OCP; 개방 폐쇄 원칙
  3. LSP; 리스코프 치환 원칙
  4. ISP; 인터페이스 분리 원칙
  5. DIP; 의존 역전 원칙

아주 간단한 요약

1. SRP; 단일 책임 원칙

  • 모델링, 즉 적절한 추상화와 상속을 통해

2. OCP; 개방 폐쇄 원칙

  • 구현이 바뀌어도 인터페이스를 통해 사용에 영향을 주지 않는다.

3. LSP; 리스코프 치환 원칙

  • 상속의 원칙에 만족하는가? → LSP를 만족한다.
    • is a kind of - (extend)
    • is able to - (interface)

4. ISP; 인터페이스 분리 원칙

  • SRP와 연관이 있다.
  • 상위 클래스를 풍성하게 만든다. 대신 인터페이스를 통해 특징들을 분류 한다.
  • 만약 하위클래스가 풍성하게 된다면? → 인스턴스를 만들때 타입캐스팅을 계속 해야된다.

5. DIP; 의존 역전 원칙

  • OCP와 연관이 있음
  • 추상화 된 것은 구체적인 것에 의존하면 안된다.
  • 구체적인 것이 추상적인 것에 의존해야 한다
  • 자주 변경되는 구체(Concrete)클래스에 의존하면 안된다.

Comments