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

盐城手机网站建设wordpress漂浮框

盐城手机网站建设,wordpress漂浮框,可信网站验证多少钱,上海紫昌网站建设目录 一、 啥是观察者模式?二、 为什么要用观察者模式?三、 观察者模式的实现方式四、 观察者模式的优缺点五、 观察者模式的应用场景六、 总结 🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,…

在这里插入图片描述

目录

    • 一、 啥是观察者模式?
    • 二、 为什么要用观察者模式?
    • 三、 观察者模式的实现方式
    • 四、 观察者模式的优缺点
    • 五、 观察者模式的应用场景
    • 六、 总结

🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,可以多多支持一下,感谢🤗!
🌟了解状态模式请看: (十 七)趣学设计模式 之 状态模式!
✨更多请看个人主页: 码熔burning

这篇文章带你详细认识一下设计模式中的观察者模式

一、 啥是观察者模式?

想象一下,你订阅了一个你喜欢的博主的博客 ✍️。 只要博主发布了新的文章,你就会立刻收到通知 🔔。 观察者模式就像是这种订阅机制,当一个对象(博主)的状态发生改变时,所有依赖于它的对象(订阅者)都会收到通知并自动更新。

观察者模式,就是定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象的状态发生改变时,会通知所有观察者对象,使它们能够自动更新 🎁。

简单来说,就是让多个“粉丝”时刻关注着“偶像”,一旦“偶像”有啥动静,“粉丝”们立刻知道!

  • 一个对象的状态改变需要通知多个其他对象: 就像博主发布新文章需要通知所有订阅者 📢!
  • 对象之间的依赖关系应该是松耦合的: 就像订阅者可以随时取消订阅,而不会影响博主的正常运作 🤝!
  • 你需要实现发布-订阅(Publish-Subscribe)模式: 就像博主发布文章,订阅者接收通知 📰!

二、 为什么要用观察者模式?

用观察者模式,好处多多 👍:

  • 解耦主题和观察者: 主题对象不需要知道观察者对象的具体类型,只需要知道它们实现了观察者接口 🤝!
  • 支持广播通信: 主题对象可以同时通知多个观察者对象 📣!
  • 动态添加和删除观察者: 可以方便地添加和删除观察者对象,而无需修改主题对象的代码 ➕➖!
  • 提高代码的可维护性和可扩展性: 将主题和观察者的逻辑分离,使得代码更加清晰易懂 💡!

三、 观察者模式的实现方式

观察者模式主要包含两个核心概念:

  • 主题(Subject): 也称为可观察对象,维护一个观察者列表,并提供添加、删除和通知观察者的方法 🏠!
  • 观察者(Observer): 定义了一个更新接口,当主题对象的状态发生改变时,会调用这个接口来通知观察者 ⚙️!
// 观察者接口:订阅者public interface Observer {void update(String message); // 更新消息
}// 具体观察者:用户public class User implements Observer {private String name;public User(String name) {this.name = name;}@Overridepublic void update(String message) {System.out.println(name + " 收到消息: " + message);}
}// 主题接口:公众号public interface Subject {void registerObserver(Observer observer); // 注册观察者void removeObserver(Observer observer); // 移除观察者void notifyObservers(String message); // 通知观察者
}// 具体主题:微信公众号public class WeChatOfficialAccount implements Subject {private List<Observer> observers = new ArrayList<>();private String message;@Overridepublic void registerObserver(Observer observer) {observers.add(observer);}@Overridepublic void removeObserver(Observer observer) {observers.remove(observer);}@Overridepublic void notifyObservers(String message) {this.message = message;for (Observer observer : observers) {observer.update(message);}}public void publishMessage(String message) {System.out.println("公众号发布消息: " + message);notifyObservers(message);}
}// 客户端public class Client {public static void main(String[] args) {// 创建公众号WeChatOfficialAccount officialAccount = new WeChatOfficialAccount();// 创建用户User user1 = new User("张三");User user2 = new User("李四");User user3 = new User("王五");// 注册用户officialAccount.registerObserver(user1);officialAccount.registerObserver(user2);officialAccount.registerObserver(user3);// 发布消息officialAccount.publishMessage("今天发布了一篇新文章!");// 移除用户officialAccount.removeObserver(user2);// 再次发布消息officialAccount.publishMessage("明天要举办一个活动!");}
}

代码解释

  • Observer 接口是观察者接口,定义了 update 方法,用于接收主题对象发送的通知。
  • User 类是具体观察者,实现了 Observer 接口,负责处理接收到的通知。
  • Subject 接口是主题接口,定义了 registerObserverremoveObservernotifyObservers 方法,用于管理观察者列表和发送通知。
  • WeChatOfficialAccount 类是具体主题,实现了 Subject 接口,负责维护观察者列表和发送通知。

输出结果

公众号发布消息: 今天发布了一篇新文章!
张三 收到消息: 今天发布了一篇新文章!
李四 收到消息: 今天发布了一篇新文章!
王五 收到消息: 今天发布了一篇新文章!
公众号发布消息: 明天要举办一个活动!
张三 收到消息: 明天要举办一个活动!
王五 收到消息: 明天要举办一个活动!

四、 观察者模式的优缺点

优点:

  • 解耦主题和观察者 🤝!
  • 支持广播通信 📣!
  • 动态添加和删除观察者 ➕➖!
  • 提高代码的可维护性和可扩展性 💡!

缺点:

  • 如果观察者过多,通知会消耗大量资源 😫!
  • 观察者之间可能存在循环依赖,导致系统崩溃 🤯!
  • 难以保证通知的可靠性,如果某个观察者处理通知失败,可能会影响其他观察者 😞!

五、 观察者模式的应用场景

  • GUI 事件处理: 按钮点击、鼠标移动等等 🖱️!
  • 消息队列: 发布-订阅模式 📨!
  • 股票行情: 股票价格变化通知 📈!
  • 天气预报: 天气变化通知 ☀️🌧️!

六、 总结

  • 观察者模式就像“偶像”和“粉丝”,一旦“偶像”有啥动静,“粉丝”们立刻知道! 🤩
  • 核心概念包括主题和观察者! 🔑
  • 优点是解耦主题和观察者、支持广播通信、动态添加和删除观察者、提高代码的可维护性和可扩展性! 👍
  • 缺点是如果观察者过多,通知会消耗大量资源、观察者之间可能存在循环依赖、难以保证通知的可靠性! 👎
  • 适用于一个对象的状态改变需要通知多个其他对象,并且对象之间的依赖关系应该是松耦合的场景! 🎯

希望这篇文章能让你彻底理解观察者模式! 💯 祝你学习愉快! 😄
看完请看:(十 九)趣学设计模式 之 中介者模式!


文章转载自:

http://vVMH9LpH.cznsq.cn
http://Q2KEJJoY.cznsq.cn
http://hw9veZ5C.cznsq.cn
http://oLk56vXm.cznsq.cn
http://UpkBekb0.cznsq.cn
http://0GxTloyv.cznsq.cn
http://Q0fmRxpz.cznsq.cn
http://MkWdcbtp.cznsq.cn
http://DS3MBQod.cznsq.cn
http://QyrDupWH.cznsq.cn
http://3VRJb8BE.cznsq.cn
http://6MLLXUbw.cznsq.cn
http://hy1V8EuC.cznsq.cn
http://WF55pCZj.cznsq.cn
http://Z93WIePm.cznsq.cn
http://Ai5qNqlh.cznsq.cn
http://3INXcKSV.cznsq.cn
http://2sOrrxSE.cznsq.cn
http://aS0sDS80.cznsq.cn
http://EM7JO3fG.cznsq.cn
http://AWLLSq3j.cznsq.cn
http://cicgAVjg.cznsq.cn
http://7ErKx1eX.cznsq.cn
http://lZdRSFTo.cznsq.cn
http://X7LT2XLl.cznsq.cn
http://ClTdisL1.cznsq.cn
http://rqddMYXN.cznsq.cn
http://f15QPmMn.cznsq.cn
http://3G7XP7R4.cznsq.cn
http://mJdEetez.cznsq.cn
http://www.dtcms.com/wzjs/694631.html

相关文章:

  • 即墨网站优化网站建设座谈会上的发言
  • 旺道seo网站优化大师做网站的公司怎么找客户
  • 云南省保山建设网站网站推广方式都有哪些
  • 网站建设忄金手指专业岳西县建设局网站
  • 北京个人网站建设什么是电子商务采购
  • 电子商务网站建设目标wordpress 外贸插件
  • 学做网站需要多久郑州网站建设招聘
  • 做传感器的网站湖南旅游攻略
  • 遂宁市建设局网站网站排名不稳定
  • 顺德网站制作案例咨询诏安网站建设
  • 网站后台难做吗学网站ui设计
  • 网站备案 登录名品牌升级策略
  • 海拉尔网站建设浙江同凯建设深圳公司
  • 野马视觉传媒网站建设汕头建站模板
  • 公司网址一般是什么百度搜索名字排名优化
  • 海门市住房和城乡建设局网站互动游戏制作软件
  • 建设建设部网站网站建设验收评审标准
  • 重庆seo整站优化服务wordpress表格样式
  • 小网站搜什么关键词好网站建设免费国外
  • 现在的网站推广是怎么做的公司网站建设征稿令
  • sem论坛如何seo搜索引擎优化
  • 网站建设与管理维护说课广州网站优化
  • 南京模板网站开发南京的互联网公司
  • 浏览器禁止网站怎么做官网网站建设公司
  • 怎么用ngrok做网站重庆建设工程信息官网
  • 企业网站建设标准制作投票网站
  • 伪原创对网站的影响门户网站百度百科
  • 网站seo方案设计如何建设本地网站
  • 潍坊做网站的综合服务平台一站式服务平台网站开发
  • 品牌网站建设的关键要点龙岗网站设计