[OOP] 객체 지향 설계 5원칙

now_iz·2021년 5월 26일
0
post-thumbnail

객체 지향 설계 5원칙 (SOLID)

응집도를 높이고, 결합도를 낮춰라 (High Cohesion, Loose Coupling)


SRP (단일 책임 원칙)

어떤 클래스를 변경해야 하는 이유는 하나 뿐이다.

  • 클래스/속성/메서드/패키지/모듈/프레임워크 등에도 적용된다
  • 장점 : 재사용성이 좋아진다
    • A 기능과 B 기능으로 나누어져있으면, 다른 클래스에서 A 기능만 필요한 경우에는 A 만 가져다 쓸 수 있는 모듈이 된다.

OCP

확장은 열려있고, 변경은 닫혀있다.

  • 장점 : 유지보수성이 좋아진다
    • JDBC에서 DB를 mysql 에서 oracle 로 바꾸어도 Connection 설정 부분만 바꾸면 된다.
      - 자바 애플리케이션은 JDBC 인터페이스로 인해 변화에 영향을 받지 않는다.
  • 변하는 것과 변하지 않는 것을 구분해야 한다!

LSP (리스코프 치환 원칙)

서브 타입은 기반 타입으로 변경할 수 있어야 한다. (상속)

  • 고래 -> 포유류

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

자신이 사용하지 않는 메서드에 의존 관계를 맺으면 안된다.

  • 인터페이스는 최소한의 메서드만 제공해야 한다

DIP (의존 역전 원칙)

자신보다 변경되기 쉬운 것들에 의존하지 않는다.

  • 변하기 어려운 상위 클래스/ 인터페이스/ 추상 클래스에 의존하라.
    • 자신보다 변하기 쉬운 것에 의존하던 관계 -> 인터페이스를 추가하여 의존성을 역전
profile
👀

0개의 댓글