코딩 기록들
스프링 입문 1.2 객체지향 설계 5원칙 본문
응집도 & 결합도
- 좋은 소프트웨어 = 결합도(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)
- 자신보다 변하기 쉬운것에 의존하지 말아야 함
'스프링 입문' 카테고리의 다른 글
스프링 입문 2.2 프록시(Proxy), 데코레이터(Decorator) 패턴 (0) | 2023.12.30 |
---|---|
스프링 입문 2.1 싱글톤(singleton) 패턴 & 어댑터(adapter) 패턴 (1) | 2023.12.26 |
스프링 입문 2. 디자인패턴이란? (2) | 2023.12.26 |
스프링 입문 1.3 POJO JAVA (1) | 2023.12.26 |
스프링 입문 1.1 객체지향에 대하여 (0) | 2023.12.25 |