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

开发网站要注意什么自动发货 wordpress

开发网站要注意什么,自动发货 wordpress,wordpress 发邮件函数,成都网站建设公司电话观察者模式说明 观察者模式(Observer Pattern)是一种行为设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。当主题对象发生变化时,它的所有依赖者(观察者)都会…

观察者模式说明

观察者模式(Observer Pattern)是一种行为设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。当主题对象发生变化时,它的所有依赖者(观察者)都会收到通知并自动更新。在Java中,观察者模式可以通过使用java.util.Observable类和java.util.Observer接口来实现,不过自Java 9起,这两个类被标记为过时,推荐使用更灵活的设计模式或库来实现相同的功能

应用场景

  • 订单状态变更时通知库存、物流、用户通知等子系统
  • 配置变更时,所有微服务实时更新配置。
  • 用户注册成功后发送邮件、初始化数据

优点

  1. 促进松耦合:主题只知道观察者实现了某个接口,而不需要知道观察者的具体类是谁、做了何种操作等细节。这使得你可以独立地改变主题或观察者中的一个,而不会影响另一个。
  2. 支持广播通信:不需要指定具体的观察者,主题可以将消息发送给所有注册的观察者,实现广播机制。
  3. 易于扩展:新增观察者非常容易,无需修改主题代码,只需实现观察者接口即可。

缺点

  1. 可能导致内存泄漏:如果观察者没有正确移除自己,可能会导致主题持有对已销毁观察者的引用,从而阻止垃圾回收器回收它们,造成内存泄漏。
  2. 难以追踪依赖关系:由于观察者和被观察者之间是通过接口连接的,所以很难直观地看出系统中到底有多少观察者依赖于某个主题,这增加了调试的难度。
  3. 潜在性能问题:如果有大量的观察者,通知所有观察者的过程可能会变得很慢。此外,如果通知链设计不当,还可能引起循环调用的问题。

总的来说,观察者模式非常适合处理当一个对象的状态变化需要触发其他对象进行相应变化的情况。然而,在使用该模式时也需要注意其可能带来的缺点,如内存管理、性能优化以及依赖关系的复杂性等问题。合理的设计和适当的优化可以帮助克服这些问题。

观察者模式的组成

  • Subject(主题):维护了一个观察者列表,并提供添加、删除和通知观察者的方法。
  • Observer(观察者):定义了更新接口,用于接收来自主题的通知。
  • ConcreteSubject(具体主题):继承自Subject,包含了状态信息,这些状态变化会通知给观察者。
  • ConcreteObserver(具体观察者):实现了Observer接口,用来保持与主题相关的状态,并在主题状态改变时进行自身状态的更新。

观察者模式 Demo

观察者接口及实现类

定义一个观察者接口:

/*** 观察者接口** @version 1.0* @since 2025/03/04**/
public interface Observer {// 接收更新void update(float temperature, float humidity);
}

定义一个观察者接口的实现类:

/*** 当天天气显示-实现观察者** @version 1.0* @since 2025/03/04**/
public class CurrentConditionsDisplay implements Observer{private float temperature;private float humidity;@Overridepublic void update(float temperature, float humidity) {this.temperature = temperature;this.humidity = humidity;// 更新后显示数据display();}public void display() {System.out.println("Current conditions: " + temperature + "°C and " + humidity + "% humidity");}
}

被观察者接口及实现类

定义一个被观察者接口:

/*** 被观察者接口** @version 1.0* @since 2025/03/04**/
public interface WeatherStation {// 注册观察者void registerObserver(Observer observer);// 移除观察者void removeObserver(Observer observer);// 通知所有观察者void notifyObservers();
}

定义一个被观察者接口的实现类:

/*** 实现观察者** @version 1.0* @since 2025/03/04**/
public class CurrentConditionsDisplay implements Observer{private float temperature;private float humidity;@Overridepublic void update(float temperature, float humidity) {this.temperature = temperature;this.humidity = humidity;// 更新后显示数据display();}public void display() {System.out.println("Current conditions: " + temperature + "°C and " + humidity + "% humidity");}
}

测试代码:

/*** 测试代码** @version 1.0* @since 2025/03/04**/
public class WeatherTest {public static void main(String[] args) {// 创建天气预报站ConcreteWeatherStation weatherStation = new ConcreteWeatherStation();// 创建观察者(显示屏)CurrentConditionsDisplay display1 = new CurrentConditionsDisplay();CurrentConditionsDisplay display2 = new CurrentConditionsDisplay();// 注册观察者weatherStation.registerObserver(display1);weatherStation.registerObserver(display2);// 发布新数据// 输出两个显示屏的数据System.out.println("------------------------------------------------------------------------");weatherStation.setMeasurements(25.0f, 60.0f);// 再次更新数据weatherStation.setMeasurements(30.0f, 70.0f);}
}

输出结果

------------------------------------------------------------------------
Current conditions: 25.0°C and 60.0% humidity
Current conditions: 25.0°C and 60.0% humidity
Current conditions: 30.0°C and 70.0% humidity
Current conditions: 30.0°C and 70.0% humidity

PS:
如果你看到这里,希望我的分享,可以帮到你,感谢你的阅读,愿我们在代码世界变得更强!


文章转载自:

http://KpPWjyly.kqgqy.cn
http://9yAkWjb1.kqgqy.cn
http://CbyleJZO.kqgqy.cn
http://VgPyjqFl.kqgqy.cn
http://CgCL0ecz.kqgqy.cn
http://tIRzAxFW.kqgqy.cn
http://cMkQF9o0.kqgqy.cn
http://Td6BqnQP.kqgqy.cn
http://s882Nxwu.kqgqy.cn
http://p6xUxBny.kqgqy.cn
http://XsEZpoMg.kqgqy.cn
http://rG8Khr2q.kqgqy.cn
http://rCNpOiCB.kqgqy.cn
http://crrDBiKq.kqgqy.cn
http://mEi0bM3I.kqgqy.cn
http://NpaQqgcI.kqgqy.cn
http://sV8ZyFzP.kqgqy.cn
http://KGRC2RmG.kqgqy.cn
http://n8hrSwJI.kqgqy.cn
http://5PrYPQja.kqgqy.cn
http://4caJW5QX.kqgqy.cn
http://Z98IVPRW.kqgqy.cn
http://SsNE80lA.kqgqy.cn
http://Tk9I7uZo.kqgqy.cn
http://JTYGQePi.kqgqy.cn
http://euFYv26i.kqgqy.cn
http://5O6udg7y.kqgqy.cn
http://uMuLvAbR.kqgqy.cn
http://4BFjNhD8.kqgqy.cn
http://t1K3m2V5.kqgqy.cn
http://www.dtcms.com/wzjs/705052.html

相关文章:

  • 赤峰是住房和城乡建设局网站网站关键词结构
  • 建设网站需要什么证件网站首页设计制作费用
  • 门户网站如何运营台州关键词优化推荐
  • 网站开发的报价虚拟网站php专业型
  • wordpress md风格主题科学新概念seo外链平台
  • 自己做视频网站有点卡如何搭wordpress
  • .net网站空间水产养殖畜禽饲料类网站前端模板
  • 做网站开发要注册用户体验设计师是干嘛
  • 网站做404好处网站建设流程分几步
  • 学做网站 软件下面什么不是用于制作网页的软件
  • 宁夏网站设计在哪里建设一下网站要求提供源码
  • 扁平式网站源码网址升级中
  • 如何给自己网站做网站优化wordpress 图库
  • 昆明制作企业网站网址导航推荐
  • 一般网站建设公司徐州百姓网招聘信息网
  • 快飞建站下载好字体怎么导入wordpress
  • 广州网站平台怎么做电商网站设计岗位主要是
  • 深圳网站外包建设银行大连市分行网站
  • kuler网站郑州网站改版
  • 整体网站开发12380网站建设打算
  • 买过域名之前就可以做网站了吗中国旅游网
  • 中国工程建设标准化网站凡客诚品app找不到了
  • 成都企业网站排名优化有经验的做网站
  • 常德网络建站免费申请试用网站
  • 免费的素材网站推荐打开网页就是2345网址导航
  • 黑龙江省生产建设兵团知青网站网站设计的可行性分析
  • 自已如何建网站保姆给老人做爰神马网站
  • 最好科技广州网站建设网站下载视频软件
  • 网站页面做专题的步骤做一个公众号多少钱
  • 做翻译小说网站赚钱吗哈尔滨网站建设教程