-
Notifications
You must be signed in to change notification settings - Fork 0
Observer Pattern & Visitor Pattern
pjc0247 edited this page Nov 3, 2014
·
3 revisions
한 오브젝트에서 상태 변경이 일어나면, 자동으로 그 객체에 의존하는 다른 객체들에게 연락이 가서 상태 갱신이 일어나도록 하는 패턴. (one-to-many)
- 신문사가 있다.
- 독자가 신문사에 구독 신청을 하면, 새로운 신문이 나올 때 마다 배달을 받는다.
- 더 이상 신문이 필요 없으면 구독 해지 신청을 하고, 신문은 더 이상 배달되지 않는다.
- 신문사가 남아잇는 동안 계속해서 독자들에게 신문이 배달되고, 독자는 그 동안 구독 신청 또는 구독을 해지신청 할 수 있다.
- 옵저버(독자) 추가/제거에 대해서 주체(신문사)를 변경할 필요가 없다.
- 여러 객체에서 동일한 데이터에 접근 할 때 깔끔한 객체지향을 구현할 수 있다.
- 주체와 옵저버는 재사용 될 수 잇다.
객체의 구조와 기능을 분리시키는 패턴.
다양한 객체에 새로운 기능을 추가해야 하는데, 캡슐화가 별로 중요하지 않은 경우에 사용.
비지터 패턴은 트래버서와 같이 돌아간다, 트래서버는 모든 객체의 순회를 도와주는 역할을 한다.
Traverser -> Visitor -> Objects
- 구조를 수정하지 않고도, 새로운 동작을 객체에 추가할 수 있다.
- 비지터에서 수행하는 기능과 관련된 코드를 한 곳에 집중시켜 놓을 수 있다.
- 캡슐화가 깨짐