설계원칙
SOLID
- SRP: 단일 책임 원칙 Single Responsible Principle
- OCP: 개방-폐쇄 원칙 Open-Closed Principle
- LSP: 리스코프 치환 법칙 Liskov Substitution Principle
- ISP: 인터페이스 분리 원칙 Interface Segregation Principle
- DIP: 의존성 역전 원칙 Dependency Inversion Principle
ISP
- 인터페이스 분리 원칙 Interface Segregation Principle
[그림 4-1. 인터페이스 분리 원칙]
- 그림 4-1에서 기술된 상황에서, 다수의 사용자가 me 클래스의 오퍼레이션을 사용한다.
- children: cooking, exercise
- wife: cooking, clean_home, making_money...
등등 다수 - boss: goto_work, coding
- 위 상황을 가정해보자. _me_를 사용하는 객체들의 사용하는 메서드는 정해져있다. 이들은 각기 다른 이유로 _me_를 사용한다.
- me*에서 *coding 메서드가 수정된다면 _me_를 사용하는 children, wife에도 영향을 받는다.
- 그림4-1에서는 객체를 직접 사용하고 있지만 중간에 인터페이스가 있어도 마찬가지이다.
- 이러한 문제는 그림 4-2에서 보는 것처럼 오퍼레이션을 인터페이스 단위로 분리하여 해결할 수 있다.[그림 4-2 분리된 오퍼레이션]
- coding 메서드가 수정된다면 어떻게 될까? 영향을 받는 객체는 boss 밖에 없을 것이다. 인터페이스를 분리함으로서 변경의 전파가 막아진다.
결론
- SRP가 클래스 단일책임을 강조한다면 ISP는 인터페이스 단일책임을 강조합니다.
- ISP를 통해서 반드시 필요한 최소한의 메소드에 의존하면 변경을 최소화 시킬 수 있다.
클린 아키첵처 전체 보기
클린 아키텍처란? https://blog.kjslab.com/199
클린 아키텍처 - 설계원칙 - SRP https://blog.kjslab.com/200
클린 아키텍처 - 설계원칙 - OCP https://blog.kjslab.com/201
클린 아키텍처 - 설계원칙 - LSP https://blog.kjslab.com/202
클린 아키텍처 - 설계원칙 - ISP https://blog.kjslab.com/203
클린 아키텍처 - 설계원칙 - DIP & SOLID 요약 https://blog.kjslab.com/204
클린 아키텍처 - 컴포넌트 https://blog.kjslab.com/205
클린 아키텍처 - 컴포넌트 결합 - ADP https://blog.kjslab.com/206
클린 아키텍처 - 컴포넌트 결합 - SDP https://blog.kjslab.com/207
클린 아키텍처 - 컴포넌트 결합 - SAP & 결론 https://blog.kjslab.com/208
'아키텍처 > 클린 아키텍처' 카테고리의 다른 글
클린 아키텍처란? (2) | 2023.02.11 |
---|---|
클린 아키텍처 - 설계원칙 - LSP (2) | 2023.02.11 |
클린 아키텍처 - 설계원칙 - DIP (14) | 2023.02.11 |
클린 아키텍처 - 컴포넌트 결합 - ADP (2) | 2023.02.11 |
클린 아키텍처 - 설계원칙 - OCP (13) | 2023.02.11 |
댓글