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

做编程的网站一个月多少钱免费网站seo诊断

做编程的网站一个月多少钱,免费网站seo诊断,一天必赚100元的游戏,专业设计笔记本电脑👈️上一篇:中介者模式 设计模式-专栏👈️ 文章目录 观察者模式英文原文直译如何理解? 观察者模式的角色类图代码示例 观察者模式的应用观察者模式的优点观察者模式的缺点观察者模式的使用场景 观察者模式 观察者模式(Observer…

👈️上一篇:中介者模式

设计模式-专栏👈️

---

文章目录

  • 观察者模式
    • 英文原文
    • 直译
    • 如何理解?
  • 观察者模式的角色
    • 类图
    • 代码示例
  • 观察者模式的应用
    • 观察者模式的优点
    • 观察者模式的缺点
    • 观察者模式的使用场景

观察者模式

观察者模式Observer Pattern

观察者(Observer)也称发布-订阅(Publish-Subscribe),依赖(Dependents)。

观察者模式就像是一群订阅了报纸的读者,每当报纸有新版发布(状态更新),就会自动送到这些读者的手中,读者们可以根据自己的兴趣选择阅读哪些内容。这样,读者和报纸之间形成了一种灵活、低耦合的订阅-发布关系。

英文原文

The Observer Design Pattern is a behavioral design patternthat defines a one-to-many dependency between objects so that when one object (the subject) changes state, all its dependents (observers) are notified and updated automatically.

直译

观察者设计模式(Observer Design Pattern)是一种行为设计模式,它定义了对象之间的一对多依赖关系,以便当一个对象(主题)改变其状态时,其所有依赖者(观察者)都能得到通知并自动更新。

如何理解?

观察者模式就像是一群朋友在关注一个公告板。公告板是被观察者,而朋友们是观察者。当公告板上的内容发生变化(比如有新的活动通知)时,所有关注这个公告板的朋友们(观察者)都会收到通知,并根据通知的内容做出相应的反应(比如参加活动)。这样,即使公告板的内容经常变化,朋友们也不需要一直盯着它看,只要他们关注了公告板,就能在第一时间得到通知。这种模式不仅方便了朋友们获取信息,也减轻了公告板的负担。

观察者模式的角色

观察者模式通常包含以下几个角色:

  1. Subject(主题/被观察者):它知道有哪些观察者对其感兴趣,并提供了一个接口让观察者能注册自己、移除自己以及通知它们。
  2. Observer(观察者):为那些在主题状态改变时需要获得通知的对象定义一个更新接口。
  3. ConcreteSubject(具体主题):保存有关状态的信息,并提供一个接口供观察者查询状态、注册和移除自己。
  4. ConcreteObserver(具体观察者):实现观察者接口,以便在主题的状态发生改变时得到更新。

类图

在这里插入图片描述

代码示例

package com.polaris.designpattern.list3.behavioral.pattern07.observer.classicdemo;import java.util.ArrayList;
import java.util.List;interface Observer {void update(String message);
}interface Subject {void registerObserver(Observer observer);void removeObserver(Observer observer);void notifyObservers(String message);
}class ConcreteSubject implements Subject {private List<Observer> observers = new ArrayList<>();@Overridepublic void registerObserver(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);}}// 这里可以添加其他方法来改变状态  public void setState(String state) {// 状态改变时,通知所有观察者  notifyObservers("Subject state has changed to: " + state);}
}class ConcreteObserver implements Observer {private String name;public ConcreteObserver(String name) {this.name = name;}@Overridepublic void update(String message) {System.out.println(name + " has been notified: " + message);}
}public class ObserverPatternDemo {public static void main(String[] args) {Subject subject = new ConcreteSubject();System.out.println("registerObserver: Observer 1, Observer 2...");Observer observer1 = new ConcreteObserver("Observer 1");Observer observer2 = new ConcreteObserver("Observer 2");subject.registerObserver(observer1);subject.registerObserver(observer2);System.out.println("change subject state...");// 改变主题状态,这将触发所有注册的观察者的update方法  ((ConcreteSubject) subject).setState("New state");// 移除一个观察者System.out.println("remove observer1...");subject.removeObserver(observer1);System.out.println("change subject state...");// 再次改变主题状态,只会通知未移除的观察者  ((ConcreteSubject) subject).setState("Another new state");}
}/* Output:
registerObserver: Observer 1, Observer 2...
change subject state...
Observer 1 has been notified: Subject state has changed to: New state
Observer 2 has been notified: Subject state has changed to: New state
remove observer1...
change subject state...
Observer 2 has been notified: Subject state has changed to: Another new state
*///~

上面示例当主题的状态改变时,所有注册的观察者都会收到通知并更新它们的状态。当某个观察者被移除后,它将不再收到通知。

观察者模式的应用

  1. 图形用户界面(GUI)开发:在GUI中,当用户与界面上的元素(如按钮、文本框)进行交互时,这些元素的状态可能会发生变化。观察者模式可以用于将这些状态变化通知给相应的观察者,触发相应的操作或更新界面。
  2. 消息通知系统:在聊天应用、社交媒体平台等需要实时消息传递的场景中,观察者模式可以实现消息的订阅与发布。当有新消息发布时,订阅该消息的观察者将收到通知并进行处理。
  3. 股票市场:股票交易所可以充当被观察者,而股票交易员可以充当观察者。当股票的价格、交易量等发生变化时,交易员将接收到通知并采取相应的行动。
  4. 日志记录系统:日志记录器可以充当被观察者,而观察者可以是日志分析器、报警系统等。当日志发生变化时,观察者将收到通知并执行相应的操作,如生成报告、发送警报等。

观察者模式的优点

  1. 解耦:观察者和被观察者是抽象耦合的,降低了它们之间的依赖关系,使得系统更加灵活和可扩展。
  2. 广播通信:支持一对多的依赖关系,简化了系统设计。
  3. 满足开闭原则:增加新的具体观察者或观察目标时,无需修改原有系统代码。

观察者模式的缺点

  1. 性能问题:如果一个被观察者对象有很多的直接和间接的观察者,将所有的观察者都通知到会花费很多时间,可能导致性能下降。
  2. 循环依赖问题:如果观察者和观察目标之间存在循环依赖,可能导致系统崩溃。
  3. 缺乏细节:观察者模式没有相应的机制让观察者知道所观察的目标对象是怎么发生变化的,而仅仅只是知道观察目标发生了变化。

观察者模式的使用场景

  1. 当一个对象的改变需要同时改变其他对象时:可以使用观察者模式,将需要改变的对象作为观察者,将发生变化的对象作为被观察者。
  2. 当一个对象必须通知其他对象,但又不希望这些对象与它形成紧密耦合时:通过观察者模式,可以实现对象之间的松耦合关系。

---

👈️上一篇:中介者模式

设计模式-专栏👈️

http://www.hengruixuexiao.com/news/28997.html

相关文章:

  • 四平做网站足球比赛直播2021欧冠决赛
  • 怎么在导航网站上做推广营销宣传图片
  • 网站开发电脑内存要多少nba最新排名公布
  • 自己搭建云平台苏州百度推广排名优化
  • 网站建设南阳seo推广专员工作内容
  • 上海网站制作的企业管理培训免费课程
  • 安平谁做网站好店铺seo是什么意思
  • java做网站要哪些软件班级优化大师怎么用
  • 养猪网站建设规划书网上学电脑培训中心
  • html网站正在建设源码网站建设的重要性
  • 做爰真实网站seo排名优化教程
  • 昆明设计网站建设百度指数分析案例
  • 青岛好的网站制作推广游戏推广员到底犯不犯法
  • 绿色农产品网站 模板四川网站制作
  • 怎么做自己的网站全网搜索关键词查询
  • 哪个网站可以做效果图赚钱云南网络营销公司哪家好
  • 懂福溶州做戒网站关键词优化是什么
  • 签到做任务赚钱的网站企业网站制作要求
  • 做百度网站优化多少钱查询网138网站域名
  • 昆明网站建设一条龙seo关键词排名实用软件
  • 规模大的企业建站html网页制作app
  • 可以接单做3d网站站长工具官网
  • 武汉市内做网站的公司域名是什么
  • 毕业设计都是做网站吗网站建设服务
  • 广西中小企业网站建设焦作整站优化
  • 微信平台的微网站怎么做的免费网页设计制作网站
  • 做网站比较大的公司哈尔滨网站优化
  • 网站制作推广方案app推广方案范例
  • 做影视网站违法百度在线人工客服
  • 专注徐州网站建设站长之家音效