相关文章
【合集】Java设计模式
Spring-ApplicationEvent事件使用-观察者、发布/订阅模式
观察者模式
观察者
1
2
3
|
public interface Observer {
void update(String message);
}
|
1
2
3
4
5
6
7
|
@AllArgsConstructor
public static class WeiXinUser implements Observer {
private final String name;
public void update(String message) {
System.out.println(name + "观察到-" + message);
}
}
|
主题
1
2
3
4
5
|
public interface Subject {
void attach(Observer observer);
void detach(Observer observer);
void notify(String message);
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
public static class SubscriptionSubject implements Subject {
private final List<Observer> weiXinUserList = new ArrayList<>();
@Override
public void attach(Observer observer) {
weiXinUserList.add(observer);
}
@Override
public void detach(Observer observer) {
weiXinUserList.remove(observer);
}
@Override
public void notify(String message) {
for (Observer observer : weiXinUserList) {
observer.update(message);
}
}
}
|
客户端调用
1
2
3
4
5
|
SubscriptionSubject subject = new SubscriptionSubject();
subject.attach(new WeiXinUser("孙悟空"));
subject.attach(new WeiXinUser("猪悟能"));
subject.attach(new WeiXinUser("沙悟净"));
subject.notify("师父被抓走了!!!");
|
输出
1
2
3
|
孙悟空观察到-师父被抓走了!!!
猪悟能观察到-师父被抓走了!!!
沙悟净观察到-师父被抓走了!!!
|
应用
Spring-ApplicationEvent
Spring-ApplicationEvent事件使用-观察者、发布/订阅模式