当前位置: 首页 > news >正文 乐清建设网站园林景观设计公司年度运营方案 news 2025/10/28 22:15:07 乐清建设网站,园林景观设计公司年度运营方案,域名注册商查询,wordpress当下载站文章目录 1、简介2、观察者模式简单实现抽象主题#xff08;Subject#xff09;具体主题#xff08;ConcreteSubject#xff09;抽象观察者#xff08;Observer#xff09;具体观察者#xff08;ConcrereObserver#xff09;测试#xff1a; 观察者设计模式优缺点观察… 文章目录 1、简介2、观察者模式简单实现抽象主题Subject具体主题ConcreteSubject抽象观察者Observer具体观察者ConcrereObserver测试 观察者设计模式优缺点观察者模式的优点包括观察者模式的缺点包括 1、简介 观察者模式是一种行为型设计模式它定义了一种一对多的依赖关系当一个对象的状态发生改变时它的所有依赖者都会收到通知并自动更新。(MQ和它有点像) 当对象间存在一对多关系时则使用观察者模式Observer Pattern。比如当一个对象被修改时则会自动通知依赖它的对象。观察者模式属于行为型模式。 观察者模式中一共有四种角色 Subject抽象主题也称为被观察者或可观察者它是具有状态的对象并维护着一个观察者列表。抽象主题角色把所有观察者对象保存在一个集合里每个主题都可以有任意数量的观察者。主题提供了添加、删除和通知观察者的方法。一般用一个抽象类或者一个接口实现Observer抽象观察者为所有的具体观察者定义一个接口在得到主题的通知时更新自己。这个接口叫做更新接口。抽象观察者角色一般用一个抽象类或者一个接口实现。在这个示意性的实现中更新接口只包含一个方法即Update()方法这个方法叫做更新方法。ConcreteSubject具体主题也可称为具体被观察者该角色将有关状态存入具体观察者对象在具体主题的内部状态发生改变时给所有注册过的观察者发送通知。ConcrereObserver具体观察者实现抽象观察者定义的更新接口以便在得到主题更改通知时更新自身的状态。如果需要具体现察者角色可以保存一个指向具体主题对象的引用。 从具体主题角色指向抽象观察者角色的合成关系代表具体主题对象可以有任意多个对抽象观察者对象的引用。之所以使用抽象观察者而不是具体观察者意味着主题对象不需要知道引用了哪些ConcreteObserver类型而只知道抽象Observer类型。这就使得具体主题对象可以动态地维护一系列的对观察者对象的引用并在需要通知的时候调用每一个观察者共有的update()更新方法。这种做法叫做针对抽象编程。 2、观察者模式简单实现 拿博客专栏订阅为例网站用户的博客专栏为被观察者用户为观察者当有多个用户关注了yhz的JVM专栏当yhz的JVM专栏更新时就会通知这些订阅的用户。 抽象主题Subject package DesignModel.Observer;import java.util.ArrayList;/*** BelongsProject: 3.9.demo* Author: yhz* CreateTime: 2023-07-26 17:58* Description: TODO* Version: 1.0*/ public abstract class Subject {//定义一个订阅者集合用于存储所有订阅了这个专栏的用户对象protected ArrayListObserverobservers new ArrayList();//注册方法用于向订阅者集合中增加一个订阅者public void attach( Observer observer ) {observers.add( observer );}//注销方法用于在订阅者集合中删除一个订阅者public void detach( Observer observer ) {observers.remove( observer );}//通知所有订阅者更新消息public abstract void notifyObservers(String message); }具体主题ConcreteSubject yhz的这个专栏为具体主题里面存储了订阅该专栏的网站用户并实现了抽象主题中的通知方法 package DesignModel.Observer;/*** BelongsProject: 3.9.demo* Author: yhz* CreateTime: 2023-07-26 18:18* Description: TODO* Version: 1.0*/ public class ConcreteSubject extends Subject{//重写通知方法为自己的Overridepublic void notifyObservers(String message) {//通知订阅了该主题的所有订阅者for(Observer observer:observers){observer.update(message);}} } 抽象观察者Observer package DesignModel.Observer;public interface Observer {//声明了更i性能方法void update(String message); } 具体观察者ConcrereObserver 网站用户作为具体观察者里面实现了更新的方法 package DesignModel.Observer;/*** BelongsProject: 3.9.demo* Author: yhz* CreateTime: 2023-07-26 18:06* Description: TODO* Version: 1.0*/ public class Blooger implements Observer{//博主名称private String bloogerName;public Blooger(String bloogerName) {this.bloogerName bloogerName;}Overridepublic void update(String message) {System.out.println(bloogerNamemessage);} } 测试 package DesignModel.Observer;/*** BelongsProject: 3.9.demo* Author: yhz* CreateTime: 2023-07-26 18:21* Description: TODO* Version: 1.0*/ public class Test {public static void main(String[] args) {ConcreteSubject subject new ConcreteSubject();Blooger blooger new Blooger(aa1);Blooger blooger2 new Blooger(aa2);Blooger blooger3 new Blooger(aa3);Blooger blooger4 new Blooger(aa4);subject.attach(blooger);subject.attach(blooger2);subject.attach(blooger3);subject.attach(blooger4);subject.notifyObservers(您关注的yhz更新了博客);} } 结果打印 aa1您关注的yhz更新了博客 aa2您关注的yhz更新了博客 aa3您关注的yhz更新了博客 aa4您关注的yhz更新了博客观察者设计模式优缺点 观察者模式的优点包括 降低了主题与观察者之间的耦合关系两者之间是抽象耦合关系。可以很容易扩展观察者和被观察者。主题与观察者之间建立了一套触发机制。 观察者模式的缺点包括 主题与观察者之间的依赖关系并没有完全解除。当观察者对象很多时通知的发布会花费很长时间影响程序效率。观察者模式没有相应的机制让观察者知道所观察的目标对象是怎么发生变化的而仅仅只是知道观察目标发生了变化。如果在观察者和观察目标之间有循环依赖的话观察目标会触发它们之间进行循环调用可能导致系统崩溃。 在使用观察者模式时需要谨慎处理这些问题以确保系统的稳定性和效率。 文章转载自: http://www.morning.msgrq.cn.gov.cn.msgrq.cn http://www.morning.sthp.cn.gov.cn.sthp.cn http://www.morning.qrgfw.cn.gov.cn.qrgfw.cn http://www.morning.jtqxs.cn.gov.cn.jtqxs.cn http://www.morning.shsh1688.com.gov.cn.shsh1688.com http://www.morning.skdrp.cn.gov.cn.skdrp.cn http://www.morning.knnc.cn.gov.cn.knnc.cn http://www.morning.rkfxc.cn.gov.cn.rkfxc.cn http://www.morning.lxlfr.cn.gov.cn.lxlfr.cn http://www.morning.ydryk.cn.gov.cn.ydryk.cn http://www.morning.hrqfl.cn.gov.cn.hrqfl.cn http://www.morning.xsqbx.cn.gov.cn.xsqbx.cn http://www.morning.rqxhp.cn.gov.cn.rqxhp.cn http://www.morning.xnhnl.cn.gov.cn.xnhnl.cn http://www.morning.kxryg.cn.gov.cn.kxryg.cn http://www.morning.rnyhx.cn.gov.cn.rnyhx.cn http://www.morning.btqrz.cn.gov.cn.btqrz.cn http://www.morning.gjcdr.cn.gov.cn.gjcdr.cn http://www.morning.pluimers.cn.gov.cn.pluimers.cn http://www.morning.hpcpp.cn.gov.cn.hpcpp.cn http://www.morning.tgfjm.cn.gov.cn.tgfjm.cn http://www.morning.zfhzx.cn.gov.cn.zfhzx.cn http://www.morning.jzlfq.cn.gov.cn.jzlfq.cn http://www.morning.prprz.cn.gov.cn.prprz.cn http://www.morning.5-73.com.gov.cn.5-73.com http://www.morning.ptmch.com.gov.cn.ptmch.com http://www.morning.xflzm.cn.gov.cn.xflzm.cn http://www.morning.sxygc.cn.gov.cn.sxygc.cn http://www.morning.rqqmd.cn.gov.cn.rqqmd.cn http://www.morning.jbblf.cn.gov.cn.jbblf.cn http://www.morning.pkwwq.cn.gov.cn.pkwwq.cn http://www.morning.zrdhd.cn.gov.cn.zrdhd.cn http://www.morning.kpcjl.cn.gov.cn.kpcjl.cn http://www.morning.qprtm.cn.gov.cn.qprtm.cn http://www.morning.chzqy.cn.gov.cn.chzqy.cn http://www.morning.jjxnp.cn.gov.cn.jjxnp.cn http://www.morning.srjgz.cn.gov.cn.srjgz.cn http://www.morning.mdpcz.cn.gov.cn.mdpcz.cn http://www.morning.rqmr.cn.gov.cn.rqmr.cn http://www.morning.fkyrk.cn.gov.cn.fkyrk.cn http://www.morning.smzr.cn.gov.cn.smzr.cn http://www.morning.mznqz.cn.gov.cn.mznqz.cn http://www.morning.gqcd.cn.gov.cn.gqcd.cn http://www.morning.lswgs.cn.gov.cn.lswgs.cn http://www.morning.ygkb.cn.gov.cn.ygkb.cn http://www.morning.qbmjf.cn.gov.cn.qbmjf.cn http://www.morning.hqllj.cn.gov.cn.hqllj.cn http://www.morning.nrll.cn.gov.cn.nrll.cn http://www.morning.dfygx.cn.gov.cn.dfygx.cn http://www.morning.kwfnt.cn.gov.cn.kwfnt.cn http://www.morning.nlgyq.cn.gov.cn.nlgyq.cn http://www.morning.tnkwj.cn.gov.cn.tnkwj.cn http://www.morning.xqgtd.cn.gov.cn.xqgtd.cn http://www.morning.ggjlm.cn.gov.cn.ggjlm.cn http://www.morning.bxczt.cn.gov.cn.bxczt.cn http://www.morning.gkmwx.cn.gov.cn.gkmwx.cn http://www.morning.gbsby.cn.gov.cn.gbsby.cn http://www.morning.kflpf.cn.gov.cn.kflpf.cn http://www.morning.hphfy.cn.gov.cn.hphfy.cn http://www.morning.xjpnq.cn.gov.cn.xjpnq.cn http://www.morning.chehb.com.gov.cn.chehb.com http://www.morning.ccdyc.cn.gov.cn.ccdyc.cn http://www.morning.ykrkq.cn.gov.cn.ykrkq.cn http://www.morning.pqrhb.cn.gov.cn.pqrhb.cn http://www.morning.sftrt.cn.gov.cn.sftrt.cn http://www.morning.jspnx.cn.gov.cn.jspnx.cn http://www.morning.wblpn.cn.gov.cn.wblpn.cn http://www.morning.hsflq.cn.gov.cn.hsflq.cn http://www.morning.jpqmq.cn.gov.cn.jpqmq.cn http://www.morning.lsfrc.cn.gov.cn.lsfrc.cn http://www.morning.jwfqq.cn.gov.cn.jwfqq.cn http://www.morning.kzqpn.cn.gov.cn.kzqpn.cn http://www.morning.hqllx.cn.gov.cn.hqllx.cn http://www.morning.tzlfc.cn.gov.cn.tzlfc.cn http://www.morning.dschz.cn.gov.cn.dschz.cn http://www.morning.kkhf.cn.gov.cn.kkhf.cn http://www.morning.jcxyq.cn.gov.cn.jcxyq.cn http://www.morning.mplld.cn.gov.cn.mplld.cn http://www.morning.rdxp.cn.gov.cn.rdxp.cn http://www.morning.khxwp.cn.gov.cn.khxwp.cn 查看全文 http://www.tj-hxxt.cn/news/257808.html 相关文章: 常用的网站开发电商网站推广 asp.net 窗体网站wordpress编辑器代码 wordpress和tiis 网站 优化 免费建设互动的网站网站运行环境配置 寻找手机网站建设北京网站怎么建设 做产品设计之前怎么查资料国外网站网站建设经营范围怎么写 生态文明建设网站专题培训上海高端定制网站公司 建网站需要了解哪些网站建设知识收录网站源码 织梦建公司网站软件开发的五个基本步骤 做素食香料哪个网站买国际网站设计 做网站找公司怎么找dw如何导出成为一个网页 关于茶文化网站建设的背景提高销售的10种方法 中国建设银行注册网站怎么建立一个群 网站建设及推广优化网站问题图片 产品网站免费模板设计制作小车的基本步骤 上海黄浦区网站建设专门做眼镜的网站 银川做网站的 公司有哪些搜索更多网页内容 网站建设网站制作公司哪家好设计图案大全 网站网站建设方案书怎么写页面设计收获心得 苏州网站怎么做怎样做网站域名注册 网站建设需要费用wordpress olve 外贸网站源码多语言济南企业如何建网站 在网站做登记表备案 如果修改html5网站后台 做网站什么公司好中文外贸网站有哪些 网站建设组成部分杭州明开seo 做淘客的网站关键词有哪些深圳品牌网站建设公司哪家好 团购模板网站网站群管理建设工作 创立网站成本丽江市住房建设局网站 微信公众号登录wordpress网站吗花2w学ui值得吗 自学编程的网站开源门户系统