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

网站开发一般多少钱开发app找什么公司

网站开发一般多少钱,开发app找什么公司,网站建设解决方案有哪些,wordpress有微信主题吗欢迎来到设计模式系列的第十三篇文章#xff01;在之前的文章中#xff0c;我们学习了许多常用的设计模式#xff0c;今天我们将介绍观察者模式#xff0c;它是一种行为型设计模式#xff0c;用于定义对象之间的一对多依赖关系#xff0c;当一个对象的状态发生变化时在之前的文章中我们学习了许多常用的设计模式今天我们将介绍观察者模式它是一种行为型设计模式用于定义对象之间的一对多依赖关系当一个对象的状态发生变化时所有依赖于它的对象都会得到通知并自动更新。 在学习观察者模式前我们可以带着一下三个问题来学习 1.谁是观察者谁又是被观察者 2.观察者如何”观察”被观察者的? 3.为什么要使用观察着模式 4.你在工作中见过哪些观察者模式 观察者模式简介 观察者模式是一种常用的设计模式它用于构建对象之间的发布-订阅Publish-Subscribe关系。在观察者模式中有两类核心角色 主题Subject主题是被观察的对象它维护了一个观察者列表可以动态地添加或删除观察者。主题通常具有一种状态当状态发生变化时会通知所有观察者。观察者Observer观察者是依赖于主题的对象它们会注册到主题上以便在主题的状态发生变化时得到通知并执行相应的操作。 观察者模式的核心思想是降低主题和观察者之间的耦合度使得它们可以独立地变化。这种松耦合的设计可以更好地支持可维护性和可扩展性。 为什么需要观察者模式 在软件开发中经常会遇到一对多的场景例如 一个新闻网站需要通知多个订阅者用户有新文章发布。一个股票市场应用需要通知多个投资者股票价格的变化。一个气象站需要通知多个应用天气信息的变化。 如果没有观察者模式我们可能会采用硬编码的方式来实现这些通知但这样会导致高耦合和不易维护的问题。观察者模式通过将主题和观察者分离使得它们可以独立变化从而更好地应对这类场景。 观察者模式的实现 观察者模式的实现通常包括以下几个关键元素 主题接口Subject定义了主题对象的基本操作包括注册观察者、删除观察者和通知观察者等。具体主题ConcreteSubject实现了主题接口并维护了一个观察者列表。具体主题通常具有一个状态当状态发生变化时会通知所有注册的观察者。观察者接口Observer定义了观察者对象的更新操作通常包括一个 update 方法。具体观察者ConcreteObserver实现了观察者接口并注册到具体主题上。当主题状态发生变化时具体观察者的 update 方法会被调用。 现在让我们通过一个示例来演示观察者模式的实现。假设我们正在开发一个简单的股票市场应用股票价格会不断变化我们需要通知多个投资者股票价格的变化情况。 首先我们定义观察者接口 Observer public interface Observer {void update(double price); } 然后我们定义主题接口 Subject public interface Subject {void registerObserver(Observer observer);void removeObserver(Observer observer);void notifyObservers(); } 接下来我们创建一个具体主题 StockMarket它继承了 Subject 接口 import java.util.ArrayList; import java.util.List;public class StockMarket implements Subject {private ListObserver observers new ArrayList();private double price;Overridepublic void registerObserver(Observer observer) {observers.add(observer);}Overridepublic void removeObserver(Observer observer) {observers.remove(observer);}Overridepublic void notifyObservers() {for (Observer observer : observers) {observer.update(price);}}public void setPrice(double price) {this.price price;notifyObservers();} } 在 StockMarket 类中我们维护了一个观察者列表 observers 和股票价格 price。当 setPrice 方法被调用时会通知所有注册的观察者。 接下来我们创建一个具体观察者 Investor它实现了 Observer 接口 public class Investor implements Observer {private String name;public Investor(String name) {this.name name;}Overridepublic void update(double price) {System.out.println(name 收到股票价格更新当前价格为 price);} } 最后我们可以测试观察者模式的效果 public class Main {public static void main(String[] args) {StockMarket stockMarket new StockMarket();Investor investor1 new Investor(Alice);Investor investor2 new Investor(Bob);stockMarket.registerObserver(investor1);stockMarket.registerObserver(investor2);stockMarket.setPrice(100.0);stockMarket.setPrice(105.0);stockMarket.removeObserver(investor1);stockMarket.setPrice(110.0);} } 以上代码创建了一个股票市场 StockMarket 和两个投资者 Investor并演示了股票价格的变化如何通知投资者。 观察者模式的优点 观察者模式具有许多优点使其成为软件开发中常用的设计模式之一 降低耦合度观察者模式将主题和观察者分离主题不需要知道观察者的具体细节从而降低了它们之间的耦合度。支持广播通信主题状态变化时可以通知多个观察者实现了一对多的通信方便信息广播。开闭原则通过增加新的观察者类和主题类可以扩展观察者模式符合开闭原则。可维护性因为观察者和主题之间的关系是松散的所以更容易维护和修改。 观察者模式的缺点 观察者模式也存在一些缺点需要考虑 观察者太多时性能问题如果观察者太多通知所有观察者可能会影响性能尤其是在大规模系统中。顺序问题观察者的通知顺序可能不确定如果有顺序要求需要额外处理。可能导致循环依赖主题和观察者之间的循环依赖可能引入问题需要小心处理。 观察者模式的应用场景 观察者模式适用于以下场景 一对多的依赖关系当一个对象的状态变化需要通知多个其他对象时观察者模式非常适用。例如新闻发布、股票市场更新等。抽象模型与实现分离当需要将抽象模型与其具体实现分离时观察者模式可以帮助实现这种分离。例如图形界面框架中的事件处理。动态系统在动态系统中对象的数量和类型可能会随时改变观察者模式允许动态地添加或删除观察者。 观察者模式的实际应用 观察者模式在现实世界和软件开发中都有广泛应用。以下是一些实际应用示例 邮件订阅邮件订阅服务是观察者模式的一个典型应用。用户可以订阅不同类型的邮件通知当有新邮件到达时订阅者会收到通知。社交媒体通知社交媒体平台可以通知用户关注的人或页面的更新例如新的帖子、消息或评论。股票市场应用股票市场应用通常使用观察者模式来实时通知投资者股票价格的变化。事件处理图形用户界面GUI框架使用观察者模式来处理用户事件例如鼠标点击、键盘输入等。 最佳实践 在使用观察者模式时有一些最佳实践值得注意 避免循环依赖确保主题和观察者之间没有循环依赖以防止潜在的问题。考虑多线程情况如果在多线程环境中使用观察者模式确保实现线程安全的方式来处理观察者列表和状态更新。谨慎使用广播通知通知所有观察者可能会影响性能如果只有部分观察者关心状态变化可以考虑使用条件通知。 想进一步了解观察者模式的老铁可以了解一下 spring中的事件机制:深入理解事件发布监听机制 总结 观察者模式是一种非常有用的设计模式用于实现对象之间的松耦合通信。通过定义一对多的依赖关系主题状态变化时通知多个观察者实现了对象之间的订阅机制。在实际应用中观察者模式可以帮助我们构建灵活、可扩展的系统。
http://www.w-s-a.com/news/338621/

相关文章:

  • 省级网站 开发建设 资质在国外怎么做网站
  • 中商华兴建设有限公司网站我的世界查找建筑网站
  • 广东网站设计公司百度推广免费送网站
  • 高密做网站哪家好网站建设预算
  • 免费wordpress网站模板重庆如何做聚政网站
  • 人才网站app建设建议系统开发生命周期法的优点表现
  • 门户网站想要微信登录怎么做湖南网站seo推广
  • 襄阳 网站建设管理系统网站
  • 重庆工程建设招标投标交易信息网广州外贸seo优化
  • 一个一起做网站东莞设计兼职网站建设
  • 杭州网站程序开发公司在哪个公司建设网站好
  • 网店的网站设计方案济南手机建站价格
  • 网站做了301重定向域名会自动跳转吗唐山地方志网站建设
  • 学校网站建设说明书海南省建设执业资格注册管理中心网站
  • 东莞哪家网站建设好网站风格设定
  • 自驾游网站模板搭建wordpress步骤
  • wordpress视频网站上传视频提升学历是什么意思
  • 江西省城乡建设厅建设网站浙江建设
  • 网站联系我们页面临平做网站
  • 如何用网站做cpa交互比较好的网站
  • 一家只做特卖的网站wordpress修改模板教程
  • 与恶魔做交易的网站成都到西安高铁票价
  • 太原网站制作哪家便宜长春昆仑建设股份有限公司网站
  • 优质做网站价格设计手机商城网站建设
  • 高校网站建设制度无锡网站建设排名
  • 做网站的软件wd的叫啥无锡公司网站建设服务
  • 网站建设一般需要多久网站服务器基本要素有哪些
  • 大连开发区网站开发公司免费网站建设哪个好?
  • 关于建设门户网站的通知海曙区建设局网站
  • 韩国建设部网站温州企业网站制作