소프트웨어 개체는 확장에는 열려있어야 하고 변경에는 닫혀있어야 한다.
사고 실험
웹페 데이터를 프린터용으로 포맷하도록 바꾼다고 했을 때 코드 수정은 0이 되어야 한다.
서로 다른 목적으로 변경되는 요소를 적절하게 분리하고 (단일책임원칙) 요소 사이의 의존상을 체계화함으로써 (의존성역전) 변경랑을 최소화 할 수 있다.
방향성 제어
책의 다이어그램을 보면 gateway는 genertor와 dataMapper사이에 위치하는데 이는 의존성을 역전시키기 위해서이다. gateway가 없었다면 interactor 컴포넌트에서 database컴포넌트로 바로 향하게 된다.
정보은닉
Requester는 controller가 interactor내부에 대해 너무 많이 알지 못하도록 막는 존재이다. 이게 없었다면 FinancialEntities에 대해 추이종속성을 가지게 되었을 것.
'클린아키텍쳐' 카테고리의 다른 글
10. Interface Segregation Principle (0) | 2021.03.04 |
---|---|
9. Liskov Substitution Principle (0) | 2021.02.16 |
7. Single Responsibility Principle (0) | 2021.02.16 |
6. 함수형 프로그래밍 (0) | 2021.02.16 |
4. 구조적 프로그래밍 (0) | 2021.02.16 |