[OOP 5원칙]

hamonjamon·2022년 7월 8일
0

OOP 5원칙 : 클린 코드로 유명한 로버트 마틴이 정리해놓은 객체 지향 설계

SRP : 단일 책임 원칙 (Single responsibility principle)

OCP : 개방-폐쇄 원칙 (Open/closed principle)

LSP : 리스코프 치환 원칙 (Liskov substitution principle)

ISP : 인터페이스 분리 원칙(Interface segreagation principle)

DIP : 의존관계 역전 원칙(Dependency Inversion principle)


SRP 단일 책임 원칙

Single responsibility principle

  • 한 클래스는 하나의 책임만 가져야 한다.
  • 클래스의 단일 책임을 원칙으로 한다.

OCP 개방-폐쇄 원칙

Open/closed principle

  • SW 요소는 확장에는 열려있으나, 변경에는 닫혀있어야 한다.
    • 인터페이스를 통한 기능의 추상화
  • 객체의 확장은 개방적으로, 객체의 변경은 폐쇄적으로 대한다.

LSP 리스코프 치환 원칙

Liskov substitution principle

  • 프로그램 객체는 프로그램의 정확성을 깨뜨리지 않으며 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
  • 사용자의 관점에서 기능에 영향을 미치지 않고 자식 클래스가 부모 클래스를 대체할 수 있어야 한다.
    • 자동차 Interface : 엑셀 메서드는 앞으로 가는 기능이지만 뒤로 가게 구현한다면 LSP 위반

ISP 인터페이스 분리 원칙

Interface segregation principle

  • 해당 인터페이스를 사용하는 클라이언트 기준으로 분리해야 한다.
  • == 클라이언트 입장에서 사용하는 기능만 제공하도록 인터페이스를 분리해야 한다.
  • 인터페이스의 단일 책임을 원칙으로 한다.
    • 자동차 Interface ⇒ 운전 Interface, 정비 Interface로 분리
    • 사용자 Client ⇒ 운전자 Client, 정비사 Client로 분리

DIP 의존관계 역전 원칙

Dependency Inversion principle

  • 구현체 클래스에 의존하지 말고 추상성(인터페이스)에 의존하라
    • 역할에 의존해야지, 구현 자체에 의존해서는 안된다.
  • DIP 위반 : 추상화에 의존하지 않고 구체화에 의존한다.

0개의 댓글