스프링 입문
스프링 입문 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)
- 자신보다 변하기 쉬운것에 의존하지 말아야 함