반응형
더보기
객체의 상태 변화를 관찰하는 옵저버 들의 목록을 객체에 등록
상태 변화가 있을 때마다 메서드를 통해 객체가 직접 각 옵저버에게 통지하도록 한다
- 주로 분산 이벤트 핸들링 시스템을 구현하는데 사용
객체의 상태가 변할 때 연관된 객체들에게 알림을 보내는 패턴
장점
- 실시간으로 한 객체의 변경사항을 다른 객체에 전파할 수 있다.
- 느슨한 결합으로 시스템이 유연하고 객체간의 의존성 제거 가능
public class Observer {
public String msg;
public void receive(String msg){
System.out.println(this.msg + "에서 메시지를 받음 : " + msg);
}
}
public class User1 extends Observer{
public User1(String msg){
this.msg = msg;
}
}
//
public class User2 extends Observer{
public User2(String msg) {
this.msg = msg;
}
}
import java.util.ArrayList;
import java.util.List;
public class Notify {
private List<Observer> observers = new ArrayList<Observer>();
// 옵저버에 추가
public void attach(Observer observer){
observers.add(observer);
}
// 옵저버에서 제거
public void detach(Observer observer){
observers.remove(observer);
}
// 옵저버들에게 알림
public void notifyObservers(String msg){
for (Observer o:observers) {
o.receive(msg);
}
}
}
public class Main {
public static void main(String[] args) {
Notify notice = new Notify();
User1 user1 = new User1("유저1");
User2 user2 = new User2("유저2");
notice.attach(user1);
notice.attach(user2);
String msg = "공지사항입니다~!";
notice.notifyObservers(msg);
notice.detach(user1); // user1 공지사항 받는 대상에서 제거
msg = "안녕하세요~";
notice.notifyObservers(msg);
}
}
반응형
'Java > Design Pattern' 카테고리의 다른 글
빌더 패턴 Builder (0) | 2023.01.17 |
---|---|
컴포짓 패턴 Composite (0) | 2023.01.16 |
프로토타입 패턴 Prototype (0) | 2023.01.16 |
템플릿 메소드 패턴 (0) | 2023.01.11 |
추상 팩토리 패턴 (0) | 2023.01.11 |