코딩 기록들

스프링 입문 1.2 객체지향 설계 5원칙 본문

스프링 입문

스프링 입문 1.2 객체지향 설계 5원칙

코딩펭귄 2023. 12. 26. 01:19
응집도 & 결합도

- 좋은 소프트웨어 = 결합도(coupling) 낮추고, 응집도(cohesion) 높여야 함

 

결합도 

  • 클래스(모듈)간 상호의존정도를 나타내는 지표
  • 결합도가 낮으면 : 모듈 간 상호의존성이 줄어들고 -> 객체의 재사용및 유지보수가 유리함

응집도

  • 하나의 모듈 내부에 존재하는 구성요소들의 기능적인 관련성
  • 응집도가 높으면 : 모듈은 하나의 책임에 집중 & 독립성이 높아짐 -> 재사용및 유지보수가 용이함

 

 

1. 단일책임원칙 (SRP Single Responsibility Principle)

  • 어떠한 클래스를 변경해야하는 이유는 한가지 뿐이여야 함

 

2. 개방 폐쇄 원칙 (OCP Open Closed Principle)

  • 자신의 확장에는 열려있고 & 주변의 변화에대해서는 닫혀있어야 함
  • 상위클래스 or 인터페이스를 중간에 둠 ->자신은 변화에 대해서 폐쇄적 but 인터페이스는 외부의 변화에 대해 확장 개방
  • JDBC, Mybatis, Hibernate 등 Java에서는 Stream에서(Input, Out)에서 찾아볼 수 있음 

 

 

3. 리스코프 치환 원칙 (LSP Liskov Substitution Principle)

  • 서브타입은 언제나 자신의 상위(기반)타입으로 교체할수 있어야함

 

4. 인터페이스 분리원칙 (ISP Interface Segregation Principle)

  • 클라이언트는 자신이 사용하지않는 메서드에 의존관계를 맺으면 안됨
  • 프로젝트 요구사항과 설계에 따라 SRP, ISP를 선택함

 

5. 의존 역전 원칙 (DIP Dependency Inversion Principle)

  • 자신보다 변하기 쉬운것에 의존하지 말아야 함