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

网站首页原型图咋做杭州做网站的好公司

网站首页原型图咋做,杭州做网站的好公司,公司网站数据库,手机网站 asp设计模式-07 设计模式-观察者模式#xff08;Observer Pattern#xff09; 1.定义 观察者模式是一种软件设计模式#xff0c;它定义了一种一对多的依赖关系#xff0c;其中一个对象#xff08;称为“主题”#xff09;维护了一个依赖对象的列表#xff08;称为“观察者”…设计模式-07 设计模式-观察者模式Observer Pattern 1.定义 观察者模式是一种软件设计模式它定义了一种一对多的依赖关系其中一个对象称为“主题”维护了一个依赖对象的列表称为“观察者”并且当主题的状态发生变化时它会自动通知所有观察者。 2.内涵 换句话说观察者模式允许对象订阅其他对象并接收有关其状态更改的通知。主题对象负责管理观察者列表并通知它们任何状态更改。 涉及到的相关术语 主题Subject维护观察者列表并通知它们状态更改的对象。观察者Observer订阅主题并接收有关其状态更改的通知的对象。具体主题Concrete Subject实现主题接口并维护具体状态和观察者列表的类。具体观察者Concrete Observer实现观察者接口并定义对主题状态更改的响应的类。 工作原理,当观察者模式使用时 观察者向主题注册表示他们有兴趣接收状态更改通知。主题维护一个观察者列表其中包含所有已注册的观察者。当主题的状态发生变化时它会遍历观察者列表并调用每个观察者的 update() 方法。观察者收到通知并相应地更新自己的状态。 3.使用案例 #include iostream #include vector// Observer interface class Observer { public:virtual void update(float temperature, float humidity, float pressure) 0; };// Subject (WeatherStation) class class WeatherStation { private:float temperature;float humidity;float pressure;std::vectorObserver* observers;public:void registerObserver(Observer* observer) {observers.push_back(observer);}void removeObserver(Observer* observer) {// You can implement the removal logic if needed.}void notifyObservers() {for (Observer* observer : observers) {observer-update(temperature, humidity, pressure);}}void setMeasurements(float temp, float hum, float press) {temperature temp;humidity hum;pressure press;notifyObservers();} };// Concrete Observer class Display : public Observer { public:void update(float temperature, float humidity, float pressure) {std::cout Display: Temperature temperature °C, Humidity humidity %, Pressure pressure hPa std::endl;} };int main() {WeatherStation weatherStation;// Create displaysDisplay display1;Display display2;// Register displays as observersweatherStation.registerObserver(display1);weatherStation.registerObserver(display2);// Simulate weather data updatesweatherStation.setMeasurements(25.5, 60, 1013.2);weatherStation.setMeasurements(24.8, 58, 1014.5);return 0; } 4.注意事项 观察者模式的优点包括 松散耦合观察者和主题是松散耦合的这意味着它们可以独立更改而不会影响彼此。可扩展性可以轻松地向系统中添加或删除观察者而不会影响主题或其他观察者。可重用性观察者模式可以轻松地应用于不同的应用程序和领域。 观察者模式的缺点包括 性能开销当主题的状态经常更改时通知所有观察者可能会产生性能开销。通知顺序观察者模式不保证观察者将按特定顺序收到通知。内存占用如果有很多观察者订阅主题主题需要维护一个很大的观察者列表这可能会导致内存占用增加。 5.最佳实践 使用接口而不是具体类主题和观察者接口应该用于定义主题和观察者之间的关系而不是使用具体类。这提高了代码的可重用性和灵活性。使用弱引用观察者应该使用弱引用持有对主题的引用。这可以防止循环引用并允许在观察者不再需要时自动释放它们。考虑使用事件对象事件对象可以用来封装状态更改通知。这可以提供更丰富的通知其中包含有关状态更改的附加信息。使用主题层次结构当需要对不同类型的状态更改进行更精细的控制时可以使用主题层次结构。这允许观察者只订阅他们感兴趣的特定状态更改。 使用观察者模式需要考虑优化通知性能如果主题的状态经常更改可以使用以下技术来优化通知性能 使用位掩码或标志来跟踪已更改的状态方面。批量处理观察者通知。使用异步通知机制例如消息队列。使用线程安全如果主题或观察者可能从多个线程访问则需要使用线程安全技术例如互斥锁或原子操作。考虑使用第三方库有许多第三方库提供了观察者模式的实现可以简化其在应用程序中的使用。 6.总结 仅在需要时使用观察者模式。它可能会引入一些开销和复杂性。心中明白清楚地定义观察者订阅和取消订阅的机制。考虑使用观察者模式的变体例如发布/订阅模式或模型-视图-控制器 (MVC) 模式。在设计观察者模式时牢记 SOLID 原则单一职责、开放/封闭、里氏替换、接口隔离和依赖反转。
http://www.hkea.cn/news/14510492/

相关文章:

  • 手机网站和微信网站的区别产品促销活动方案
  • 域名做好了怎么做网站内容购物网站开发教程 视频
  • 网站如何被百度收录文字转链接网址
  • 可以做请柬的网站腾讯网站认证
  • 建设银行内部学习网站竞价排名的弊端
  • 微信公众号如何做微网站网站上的菠菜游戏哪里可以做
  • 35个好的网站设计做室内装修设计的网站
  • 无网站可以做cpc吗郑州seo线上推广系统
  • 建设网站怎样分配给用户空间青岛公司网页设计
  • 免费跨境电商网站xampp wordpress 建站教程
  • 网站的优化和推广方案门户网站建设教程
  • 网站维护很难吗wordpress前端框架
  • 南宁网站建设地方软件工程师工资高吗
  • 天津网站快速备案做企业网站怎样做
  • vps怎么上传网站程序兰州关键词网络推广
  • 随州网站建设推荐长沙县不错的建站按效果付费
  • 做注册会计师网站wordpress live space
  • 怎么把网站地图上传搭建电商平台网站
  • 高端模板建站报价wordpress 首页调用页面标题
  • 一步步教会你怎么做网站小程序源码能直接用吗
  • 中国建设银行卖狗年纪念币官方网站教学网站开发背景
  • 辽宁地矿建设集团有限公司网站莱芜信息平台
  • 用html5做的静态网站网站开发技术与功能 需求说明
  • 企业网站建设的必要性专业团队的梗
  • 资讯网站的优势福建亨立建设集团有限公司网站
  • 杭州做网站要多少钱网站开发尾款如何做账
  • 网站的设计思路范文jquery 网站后台模板
  • ppt模板免费下载网站知乎wordpress增加小工具
  • 太原网站建设丿薇微信内部劵网站怎么做
  • 温州捷创网站建设安年软文网