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

有经验的合肥网站建设佛山网页制作设计

有经验的合肥网站建设,佛山网页制作设计,企业网络营销成功案例,启东网站建设观察者(Observer、Publish-Subscribe:Pub/Sub)模式属于行为型模式的一种。 观察者模式是一种一对多的通知机制,让发送通知的一方(被观察者)和接收通知的一方(观察者)能彼此分离&…

观察者(Observer、Publish-Subscribe:Pub/Sub)模式属于行为型模式的一种。

观察者模式是一种一对多的通知机制,让发送通知的一方(被观察者)和接收通知的一方(观察者)能彼此分离,互不影响。观察者模式的目的是要分离被观察者和观察者之间的耦合关系。

观察者模式的核心在于建立一种机制,使得当一个对象的状态变化时,所有依赖于它的对象(观察者)都能得到通知并作出相应的更新。

广义的观察者模式包括所有消息系统。消息系统,就是把观察者和被观察者完全分离,通过消息系统本身来进行通知。

在真实世界中,出版社是发布者,我们这些订阅了报纸或杂志的民众,是订阅者。出版社会在刊物出版后直接将最新一期寄送给我们,我们不用跑去出版社拿了。

Java标准库中的 java.util.Observer 类和 java.util.Observable 类,本来可以用来帮助我们实现观察者模式的。但是,这两个类在Java 9中已经被弃用了,弃用原因我就不描述了,大家可以搜一下。我们可以使用自定义的观察者模式,来满足更灵活的需求。

观察者模式通常有以下组成部分: 

  • 观察者接口:包含一个更新方法,用于接收主题的通知。
  • 具体观察者:实现观察者接口,定义接收到通知时的行为。
  • 主题接口:包含添加、删除和通知观察者的方法。
  • 具体主题:实现主题接口,管理观察者列表,并在状态改变时通知它们。

我们模拟一个简单的观察者模式。

1、观察者接口

// 观察者接口
public interface Observer {void update(String message);
}

2、具体观察者

// 具体观察者
public class ConcreteObserver implements Observer {private String name;public ConcreteObserver(String name) {this.name = name;}@Overridepublic void update(String message) {System.out.println(name + " received message: " + message);}
}

3、主题接口

// 主题接口
public interface Subject {void addObserver(Observer observer);void removeObserver(Observer observer);void notifyObservers(String message);
}

4、具体主题

// 具体主题
public class ConcreteSubject implements Subject {private List<Observer> observers = new ArrayList<>();@Overridepublic void addObserver(Observer observer) {observers.add(observer);}@Overridepublic void removeObserver(Observer observer) {observers.remove(observer);}@Overridepublic void notifyObservers(String message) {for (Observer observer : observers) {observer.update(message);}}
}

5、客户端

// 客户端代码
public class ObserverPatternDemo {public static void main(String[] args) {ConcreteSubject subject = new ConcreteSubject();Observer observer1 = new ConcreteObserver("Observer 1");Observer observer2 = new ConcreteObserver("Observer 2");subject.addObserver(observer1);subject.addObserver(observer2);subject.notifyObservers("Hello Observers!");}
}

观察者模式的优缺点

优点:

  • 降低耦合度:主题和观察者之间是抽象耦合的,彼此独立,易于维护和扩展。
  • 动态添加和删除观察者:可以在运行时动态地添加或删除观察者,灵活性高。

缺点:

  • 性能问题:如果观察者数量众多,通知过程可能耗时,影响性能。
  • 可能导致循环依赖:不当的设计可能导致观察者和主题之间的循环依赖,造成内存泄漏。

观察者模式是一种强大的设计模式,能够有效地解耦对象之间的关系,适用于需要在对象状态变化时通知多个依赖对象的场景。

怨天者无志,怨人者心穷。-- 烟沙九洲

http://www.dtcms.com/wzjs/553693.html

相关文章:

  • 网站开发 技术投标网页设计教程下载
  • 免费自助建站平台凡客诚品 正品官网
  • 网站 手机案例上海杨浦区建设网站
  • 国外设计网站排名海外网络推广厂家
  • 昆明建设局官方网站网络规划设计师是高级职称吗
  • 南通六建网站关键词优化软件有哪些
  • 免费俄罗斯网站制作wordpress怎么使用七牛
  • 网站建设宣传ppt模板下载怎么看网站是什么时候做的
  • 企业网站建设2017wordpress填错地址
  • 阿里云怎么创建网站网站开发公司海报
  • 专业建设的主要内容长春seo公司哪家好
  • 黄埭做网站下载百度网盘app最新版
  • 做网站维护需要什么证书直播网站功能怎么做
  • 阿里云可以做电商网站吗Wordpress与dw
  • 网站空间续费多少钱设计师网站prinest
  • 扬州哪里做网站好网站开发项目的需求分析
  • 企业开发网站建设建设银行关闭网站查询信用卡账单
  • xuezuo网站建设大连app开发公司排名
  • 自己做的网站怎么被搜录建筑设计软件哪个好用
  • 平面设计比较好的网站长沙设备建站按效果付费
  • 长沙好博网站建设有限公司通许网站建设
  • 怎么用vs2017做网站郑州专业喷绘制作公司
  • 网站外链建设可以提升网站权重对吗网站注册界面代码
  • 如何判断网站做的关键词南昌企业做网站设计
  • 深圳专业的网站制作公司少儿python基础教程
  • 深圳微商城网站设计价格网站 售后服务
  • 医院网站建设投标书重庆最好的网站建设公司
  • 建筑建设规范网站购买域名有什么用
  • 搭建企业网站宽带多大网络营销的概念和定义
  • 企业官网有哪些开封网站优化公司