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

向网站上传文件怎么做wordpress 优秀作者

向网站上传文件怎么做,wordpress 优秀作者,doc文件打开乱码怎么办,asp.net网站不能上传图片什么是观察者模式 顾名思义,观察者模式就是在多个对象之间,定义一个一对多的依赖,当一个对象状态改变时,所有依赖这个对象的对象都会自动收到通知。 观察者模式也称为发布订阅模式(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/423274/

相关文章:

  • 深圳规划建设局网站做网站给女朋友
  • 娱乐网站建设ppt云浮 网站建设
  • 网站建设技术服务费记什么科目上海网站制作
  • 网站建设维护方案ppt国外客户的网站电话
  • 未支付网站建设挂哪个科目wordpress会员功能主题
  • 网站开发一般用什么服务器学院网站设计案例
  • 做网站都用什么软件如何推广网站
  • 做哪个网站最简单余姚 网站建设
  • 做企业网站 长春h5企业网站只做
  • 做网站是用的那个开发软件百度公司网站推广怎么做
  • 甘肃省长城建设集团网站网站名百度搜不到
  • 软件下载平台哪个好深圳网站seo优化
  • 360报危险网站怎样让客户做网站
  • 网站开发还是做数据库开发文化礼堂建设情况网站
  • wordpress手机端网站模板下载失败南京做网站公司
  • 天河区建设网站深圳互联网公司排行榜100
  • 济南建站都选企汇优先做后付教人做网站的视频
  • 仿租号网站源码网站开发昆明网站建设介绍
  • 用html做个人网站代码济南赢动网站建设
  • 网站模板大全官网丰台手机网站设计
  • 宁波网站改版手机4399电脑版网页游戏大全
  • 做暧网站免费参考文献 教学网站建设
  • 毕业设计网站方向vultr安装wordpress
  • 金融投资网站源码wordpress 百秀主题
  • 博湖网站建设千锋教育总部在哪里
  • 中国铁路保险网站自己做网站要不要租服务器
  • wap网站制作工具陕西省住房和城市建设厅网站
  • 江苏宏澄建设有限公司网站宝山企业做网站
  • 有哪些网站做外贸的应用市场下载安装软件
  • 化妆品电子商务网站建设规划书jsp网站设计