前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >观察者模式[布道者]设计模式最新版

观察者模式[布道者]设计模式最新版

作者头像
CaesarChang张旭
发布2022-09-28 15:59:32
1980
发布2022-09-28 15:59:32
举报
文章被收录于专栏:悟道悟道

定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新

代码语言:javascript
复制
主题Subject角色:
	首先定义一个观察者数组,并实现增、删及通知操作。
   它的职责很简单,就是定义谁能观察,谁不能观察 

  class Subject {
 
    //观察者数组
    private List<Observer> list = new ArrayList<>();
 
    //增加一个观察者,相当于观察者注册
    public void addObserver(Observer observer) {
        this.list.add(observer);
    }
 
    //删除一个观察者
    public void deleteObserver(Observer observer) {
        this.list.remove(observer);
    }
 
    //通知所有观察者,主题有变化时通知观察者
    public void notifyObserver() {
        for(Observer observer : this.list) {
            observer.response();
        }
    }
 
   class ConcreteSubject extends Subject {
   	 public void doSomething() {

        System.out.println("具体目标发生改变...");
        super.notifyObserver();
   	 }
 
}
    
    interface Observer {
   		 public void response();
}
    
    
    //具体观察者1
class ConcreteObserver1 implements Observer {
    public void response() {
        System.out.println("具体观察者1作出反应!");
    }
}
 
//具体观察者1
class ConcreteObserver2 implements Observer {
    public void response() {
        System.out.println("具体观察者2作出反应!");
    }
}
​
    
测试:
      public static void main(String[] args) {
        //创建一个主题
        ConcreteSubject subject = new ConcreteSubject();
        //定义一个观察者
        Observer observer1 = new ConcreteObserver1();
        Observer observer2 = new ConcreteObserver2();

        //注册观察者
        subject.addObserver(observer1);
        subject.addObserver(observer2);
        //开始活动
        subject.doSomething();
    }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-09-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档