当前位置: 首页 > news >正文

wordpress教程 书籍宁波seo推广方式排名

wordpress教程 书籍,宁波seo推广方式排名,重庆网站建设企业,logo制作用什么软件什么是观察者模式 顾名思义,观察者模式就是在多个对象之间,定义一个一对多的依赖,当一个对象状态改变时,所有依赖这个对象的对象都会自动收到通知。 观察者模式也称为发布订阅模式(Publish-Subscribe Design Pattern)&#xff0…

什么是观察者模式

顾名思义,观察者模式就是在多个对象之间,定义一个一对多的依赖,当一个对象状态改变时,所有依赖这个对象的对象都会自动收到通知。

观察者模式也称为发布订阅模式(Publish-Subscribe Design Pattern),一般被依赖的对象称为被观察者,依赖的对象称为观察者,不过也有其他的叫法,例如Subject和Observer,Publisher和Subscriber,Producer和Consumer,EvenEemitter(事件发布器)和EventListene,还有Dispatcher和Listener。只要场景符合观察者模式的定义,都算观察者模式的应用。

类图

在这里插入图片描述

  • 主题Subject: 主题中包含着所有调用registerObservers来进行注册的 Observer(观察者) ,主题收到消息后,通过notifyObservers方法,告知所有观察者其状态的改变

  • 观察者Observer: 包含着收到消息的处理逻辑,处理逻辑存在于其update方法中

之前在学习设计模式的时候,有了解过这个模式,在使用MQ中间件的时候其实也有实践过观察者模式,不过这次EventBus又接触到了观察者模式,所以就总结记录一下吧,同时也再复习一下观察者模式。

典型代码实现

是从一个博主那里引用过来的,他写的很详细,博主的详细博文在文末链接。

/*** 主题接口** @author liuyp* @date 2022/11/28*/
public interface Subject<T> {void registerObserver(Observer<T> obverser);void removeObserver(Observer<T> obverser);void notifyObservers(T message);
}
/*** 观察者接口** @author liuyp* @date 2022/11/28*/
public interface Observer<T> {void update(T message);
}
/*** 主题的具体实现** @author liuyp* @date 2022/11/28*/
public class ConcreteSubject<T> implements Subject<T> {/*** 线程安全的Set容器,保存obversers*/private Set<Observer<T>> obversers = new CopyOnWriteArraySet<>();@Overridepublic void registerObserver(Observer<T> obverser) {obversers.add(obverser);}@Overridepublic void removeObserver(Observer<T> obverser) {System.out.println("Obversable@" + this.hashCode() + " 移除观察者:" + obverser.hashCode());obversers.remove(obverser);}@Overridepublic void notifyObservers(T message) {System.out.println("Obversable@" + this.hashCode() + " 发布了一条消息:" + message.toString());obversers.forEach(obverser -> obverser.update(message));}
}
/*** 具体的观察者** @author liuyp* @date 2022/11/28*/
public class ConcreteObverser<T> implements Observer<T> {@Overridepublic void update(T message) {System.out.println("Obverser@" + this.hashCode() + " 收到通知:" + message);}
}
/*** 测试类** @author liuyp* @date 2022/11/28*/
public class TestMain {public static void main(String[] args) {//定义主题 也是被观察者observableSubject<String> subject = new ConcreteSubject<>();//定义观察者 observerObserver<String> observer1 = new ConcreteObverser<>();Observer<String> observer2 = new ConcreteObverser<>();//订阅主题 subjectsubject.registerObserver(observer1);subject.registerObserver(observer2);//发布通知subject.notifyObservers("消息1:明天是2022年11月29日");//移除观察者1subject.removeObserver(observer1);//重新发布通知subject.notifyObservers("消息2:琪琪农历10月17生日");}
}
Obversable@1802598046 发布了一条消息:消息1:明天是20221129Obverser@240650537 收到通知:消息1:明天是20221129Obverser@483422889 收到通知:消息1:明天是20221129Obversable@1802598046 移除观察者:240650537
Obversable@1802598046 发布了一条消息:消息2:琪琪农历1017生日
Obverser@483422889 收到通知:消息2:琪琪农历1017生日

观察者模式的作用

可以使得发布者和订阅者的代码解耦合,增加代码的可靠性和灵活性。

EventBus

下期我们再来说说观察者模式的应用EventBus~

原博客不小心关掉了 找不到了 如有侵权 请博主与我联系我挂上博主原文连接~

http://www.yayakq.cn/news/982475/

相关文章:

  • thinkphpcmf网站开发青岛崂山建设局网站
  • 撰写网站建设策划书范文网站建设后怎么做主页
  • 广州企业网站建设方案商务网站策划 网站目标与经营模式定位
  • 网站布局建设seo 优化思路
  • 泰州整站优化手机优化大师哪个好
  • 物流企业网站有哪些wordpress 插件哪里
  • 全国最新网站备案查询自己的域名可以转给做网站的账号吗
  • 在国税网站怎么做实名江苏手机网站建设公司
  • wordpress整站模板厦门北京网站建设公司
  • 网站设计的关键网站外链如何建设最有用
  • 滨州哪里做网站北京网页设计
  • 陕西培训网站建设国庆节网页设计素材
  • 阿里企业邮箱电话南城网站优化公司
  • 网站设计与开发技术教程多语言网站怎么做
  • 外部调用wordpress站点文章网站seo在线优化
  • 网站建设用电脑管理咨询公司属于什么行业
  • 南和县建设局黄页网站邢台论坛网
  • 公司网站如何被收录wap娃派手机信息网
  • 一个专门做视频配音的网站河南平台网站建设公司
  • 一个做外汇的网站叫熊猫什么的企业网站首页flash
  • 那些网站可以做文案兼职长春做网站 长春万网
  • uo建设网站做外贸a货网站
  • .课程网站建设与应用企业网络营销策划方案范文
  • 网站建设设计风格如何与色彩搭配单页网站 seo
  • 网站编辑器做段落空格最新代理项目
  • 网站关键词价格唐山培训网站建设
  • 建立公司网站的好处dw制作简单网站模板下载地址
  • 山东网站制作设计h5设计制作
  • 南通seo公司网站施工企业筹备建立
  • 帮客户做网站图片被告侵权怎么购买网站空间和域名