👣 문제 상황
특정 그룹의 객체들에게 일괄적으로 특정 행위를 하게 만들어야 할 때, 사용함.
예를 들어, 트위터에서 트윗을 작성하면 팔로워들의 피드에 해당 트윗을 띄워야 함.
목적 : 객체 그룹의 특정 행위 실행.
👣 해결 방법
public interface Publisher {
public void add(Observer observer);
public void delete(Observer observer);
public void notifyObserver();
}
public interface Observer {
public void update(String arg);
}
public class PublisherImpl implements Publisher {
private List<Observer> observers = new ArrayList<>();
private String arg;
@Override
public void add(Observer observer) {
observers.add(observer);
}
@Override
public void delete(Observer observer) {
observers.remove(index);
}
@Override
public void notifyObserver() {
for (Observer Observer : observers) {
observer.update(this.arg);
}
}
public void setArg(String arg) {
this.arg = arg;
notifyObserver();
}
}
public ObserverImpl implement Observer {
private String id;
private Publisher publisher;
public ObserverImpl(Publisher publisher) {
this.publisher = publisher;
publisher.add(this);
}
@Override
public void update(String arg) {
System.out.println(id + " <-- " + arg);
}
}
'디자인 패턴' 카테고리의 다른 글
Iterator Pattern - 행위 (0) | 2023.07.19 |
---|---|
Proxy Pattern - 구조 (0) | 2023.07.19 |
Strategy Pattern - 행위 (0) | 2023.07.19 |
Factory Pattern - 생성 (0) | 2023.07.19 |
Singleton Pattern - 생성 (0) | 2023.07.19 |