본문 바로가기
Be Smart/Spring

객체지향 설계 5원칙 SOLID

by 반월하 2021. 8. 19.
728x90

Chapter 01. 객체지향

객체지향 설계 5원칙 SOLID

 

응집도와 결합도

좋은 소프트웨어 설계를 위해서는 결합도(coupling)는 낮추고 응집도(cohesion)는 높여야 한다.

결합도
모듈(클래스)간의 상호 의존 정도를 나타내는 지표로써
결합도가 낮으면 모듈 간의 상호 의존성이 줄어들어서 객체의 재사용 및 유지보수가 유리하다.

응집도
하나의 모듈 내부에 존재하는 구성 요소들의 기능적 관련성으로
응집도가 높은 모듈은 하나의 책임에 집중하고 독립성이 높아져, 재사용 및 유지보수가 용이하다.

1. SRP (Single Responsibility Principle) 단일 책임 원칙
어떠한 클래스를 변경해야 하는 이유는 한 가지뿐 이어야 한다.




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

자신의 확장에는 열려 있고, 주변의 변화에 대해서든 닫혀 있어야 한다.

상위 클래스 또는 인터페이스를 중간에 둠으로써, 자신은 변화에 대해서는 폐쇄적이지만, 인터페이스는 외부의 변화에 대해서 확장을 개방해 줄 수 있다.

이러한 부분은 JDBC와 Mybatis, Hibernate 등 JAVA에서는 Stream(Input, Out)에서 찾아볼 수 있다.

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

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

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

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

프로젝트 요구 사항과 설계에 따라서 SRP (단일 책임원칙) / ISP (인터페이스 분리 원칙 )를 선택한다.

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

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

개발 폐쇄 원칙에서도 살펴본 부분이다.

SOLID는 객체 지향 4대 특성에 기반함으로써 유사한 모양을 가지고 있다.

728x90

'Be Smart > Spring' 카테고리의 다른 글

Singleton Pattern  (0) 2021.08.20
디자인 패턴  (0) 2021.08.19
POJO JAVA  (0) 2021.08.19
객체지향의 4대 특성  (0) 2021.08.19
객체지향이란?  (0) 2021.08.19

댓글