이 글은 헤드퍼스트 디자인 패턴 을 읽으며 정리한 글이다. 내가 정리해두고 내가 다시 보기 위해 쓰는 중이다! 내정내보
"유지보수에 대한 고민을 하는 개발자"로서, 유지보수 가능한 코드 작성은 프로젝트의 장기적인 성공을 위해 필수적이라고 생각한다. 그렇기에 변경에 용이한 코드를 작성하는 것은 매우 중요하다 !!!!💡 헤드퍼스트 디자인패턴 에서는 유지보수에 용이한 코드를 작성하기 위한 패턴을 제안하고, 예제 코드에 패턴을 적용해서 개선되는 모습을 보여준다.
옵저버 패턴(Observer Pattern) 은 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로, 일대다(one-to-many) 의존성을 정의한다.
위 사진처럼 주제와 옵저버들 사이에 일대다 관계가 정의된다. 옵저버는 주제에 연관되어 있으며, 주제의 상태가 바뀌면 옵저버에게 정보가 전달된다.
위 예시에서는 주제가 변경되면 연관된 옵저버인 foo, bar, qux, baz 객체에게 정보가 전달될 것이다.
느슨한 결합(Loose Coupling) 은 객체들이 상호작용할 수는 있지만, 서로를 잘 모르는 관계를 의미한다. 앞으로 읽을 내용에 나오겠지만, 느슨한 결합을 활용하면 유연성이 아주 좋아진다. 옵저버 패턴은 느슨한 결합을 보여주는 훌륭한 예이다.
옵저버 데이터 방식의 푸시(push) vs 풀(pull)
- 푸시(push): 주제가 옵저버로 데이터를 보냄
- 풀(pull): 옵저버가 주제로부터 데이터를 당겨옴
옵저버패턴을 사용하면 주제를 바꾸지 않고도 주제의 상태에 의존하는 객체들을 바꿀 수 있다. 코드 중 일부분의 변경이 다른 부분까지의 변경을 불러일으킬 때가 있는데, 옵저버 패턴을 적용하여 느슨한 결합을 사용하면 의도치 않은 변경을 막고, 유연한 변경을 하기에 적합하다. 그렇기 때문에 나중에 유지보수 할 때 편하게 작업할 수 있을 것 같다. ⭐️