위 그림에서 MyTextView->draw() 와 MyGraphView->draw() 를 사용하고
MyIntDocument->getData()를 사용해야 하는 경우 상호간 양방향 참조를 하고 있습니다.
이를 개선하기 위해서 아래와 같이 변경하면 MyTextView와 MyGraphView에서 MyDocument로만 의존성이 있게 됩니다.
MyIntDocument에서 MyTextView로의 의존성은 Observable에서 Observer 인터페이스 방향으로 추상화 되었습니다.
위 그림에서 각 구현체 객체들의 일관된 인터페이스로 통신하는 것이 더 좋을 것 같습니다. 의존성 역전(DIP)의 SOLID 원칙을 추가해서 구현해 보면 아래와 같이 MyDocument와 MyView의 인터페이스를 라이브러이 안에 가두어 고정시키고 이를 상속하여 구체화 시켜서 구현하는 방식으로 실제 활용 할 수 있습니다.
'architecture' 카테고리의 다른 글
composite design pattern example (0) | 2022.11.29 |
---|---|
[My cheat-sheet] PUML (0) | 2021.09.29 |
[My cheat-sheet] Design Patterns (0) | 2021.07.03 |
댓글