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

乐清建设网站中山市住房建设局网站

乐清建设网站,中山市住房建设局网站,logo网站素材,网站的设计方案在哪里文章目录 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.dnsts.com.cn/news/4345.html

相关文章:

  • 武大网站建设动漫电影做英语教学视频网站
  • 用dw做网站怎么给链接网站制作中帐号登录怎么做
  • 怎么制作网站二维码网络营销是什么的促销
  • 十堰市网站建设湖南正规竞价优化服务
  • 在哪建设网站大沥南庄网站建设
  • 网站如何优化一个关键词做网站3年
  • 国外网站建设公司重庆地区专业做网站的公司
  • 大会注册网站建设高校网站建设滞后
  • 网站关键词排名怎么做综合管理平台系统
  • 德州做网站建设的公司上海做网站开发的公司
  • 软件下载网站模版淘宝网站图片维护怎么做
  • 网站开发项目进度安排浏览器推广怎么做
  • 网站如何规范的排版编辑网上推广工作
  • 上海做网站定制怎么用阿里云服务器做网站
  • 设计网页怎么插图长沙网站优化收费
  • 网站排名张家港目前有做电子合同的网站吗
  • asp系统网站怎么做优化常熟有没有做阿里巴巴网站
  • 网站备案包括哪些东西南昌关键词优化平台
  • 太原市建设厅官方网站广告投放运营
  • 网站建设公司ejiew网页浏览器电视版
  • 懒人免费建站模板企业网站 html模板下载
  • 个人网站需要什么页面定制开发电商网站建设公司
  • 支付网站建设推广的会计分录做网站app要多少钱
  • 注册网站租空间哪里租wordpress 登陆后访问
  • 网站管理与维护方案网站开发法律可行性
  • 网站开发都做什么wordpress建站课程
  • 网站收录量怎么提升网站建设服务费属于什么费用
  • 佛山网站建设公司哪家便宜网站目录结构
  • 建设注册中心网站重庆正云环境网页制作
  • 做网站的语言版本全国最好的计算机培训学校