Featured image of post Java设计模式-观察者模式Observer

Java设计模式-观察者模式Observer

相关文章

【合集】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事件使用-观察者、发布/订阅模式

皖ICP备2024056275号-1
发表了78篇文章 · 总计149.56k字
本站已稳定运行