객체지향 개발 5대 원칙 | SOLID

임세현·2021년 12월 21일
2

SOLID 원칙


SRP (단일 책임 원칙)

  • 어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다.
    • 역할게 맞게 클래스를 잘 분리해야 한다

OCP (개방 폐쇠 원칙)

  • 소프트웨어 엔티티(클래스, 모듈, 함수 등)는 확장에 대해서는 열려 있어야 하지만 변경에 대해서는 닫혀 있어야 한다.
    • 자신의 확장에는 열려 있고, 주변의 변화에 대해서는 닫혀 있어야 한다.

상위 클래스 또는 인터페이스를 중간에 둠으로써 의존성을 줄인다.

LSP (리스코프 치환 원칙)

  • 서브 타입은 언제나 자신의 기반 타입으로 교체할 수 있어야 한다.
    • 하위 분류는 상위 분류의 한 종류다.
      • 하위 클래스의 인스턴스는 상위형 객체 참조 변수에 대입해 상위 클래스의 인스턴스 역할을 하는데 문제가 없어야 한다.
    • 구현 분류는 인터페이스할 수 있어야 한다.

ISP (인터페이스 분리 원칙)

  • 클라이언트는 자신의 사용하지 않는 메소드에 의존 관계를 맺으면 안 된다.
  • SRP와는 다르게 ISP는 인터페이스로 분리한다.
    • 상위 클래스는 풍성할수록 좋다.
    • 인터페이스 내에 메소드는 최소한 일수록 좋다.

DIP (의존 역전 원칙)

  • 고차원 모듈은 저차원 모듈에 의존하면 안 된다. 이 두 모듈 모두 추상화된 것에 의존해야 한다. 추상화된 것은 구체적인 것에 의존하면 안 된다. 구체적인 것이 추상화된 것에 의존해야 한다. 자주 변경되는 구체(Concrete) 클래스에 의존하지 마라
profile
android developer

0개의 댓글