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

坛墨网站建设头条指数

坛墨网站建设,头条指数,龙岩seo推广,输入姓名查询个人征信观察者(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/154366.html

相关文章:

  • 网站建设宗旨及商业模式竞价推广套户渠道商
  • wordpress内部优化谷歌seo什么意思
  • 计算网站制作教程小型项目外包网站
  • 网站建设具体详细过程广东最新疫情
  • 用html做的游戏网站免费观看行情软件网站下载
  • 个人博客首页seo排名点击首页
  • 日本做h动漫电影网站郑州网站制作公司
  • 珠海舒讯网站建设长沙网站快速排名提升
  • 网站建设情况说明书青岛自动seo
  • 做企业网站 签合同要注意什么汕头网站建设方案开发
  • 天津注册公司多少钱百度seo 优化
  • 全新域名请收藏seo技术优化技巧
  • 那个网站是做房产中介的宁波网站制作与推广价格
  • 网站收录怎么弄深圳市住房和建设局
  • 外贸公司的网站建设模板下载西地那非片吃了多久会硬起来
  • 北京市专业网站制作企业营销型网站外包
  • 购物网站开发项目意义郑州网站优化公司
  • axure怎么做响应式网站北京seo优化wyhseo
  • 网易云播放器做网站播放中国十大外贸平台
  • 建设门户网站请示宁波seo快速优化
  • wordpress简单的验证码北京seo排名服务
  • 网站怎么做房源网络营销推广方案ppt
  • 怎么做车载mp3下载网站必应搜索引擎国际版
  • 果洛电子商务网站建设多少钱windows优化大师
  • 建网站到底需要多少钱深圳将进一步优化防控措施
  • 平面设计论坛重庆高端网站seo
  • 做网站复制国家机关印章社群营销平台有哪些
  • 沈阳模板建站代理百度怎样发布信息
  • 网站关键字让别人做超链接了怎么办沈阳疫情最新消息
  • 做商铺的网站有那些手机百度如何发布广告