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

做网站填写主要品牌怎么填写用vs做网站 怎么安装

做网站填写主要品牌怎么填写,用vs做网站 怎么安装,XART视频库WordPress,一页网站定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 什么是观察者模式? 观察者模式在我们的日常生活中极其常见。 先来看看观察者模式的定义: 观察者模式定义了对象之间…

定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

什么是观察者模式?

观察者模式在我们的日常生活中极其常见。

先来看看观察者模式的定义:

观察者模式定义了对象之间一对多的依赖,当这样一来,当一个对象状态改变时,它的所有依赖者都会收到通知并自动更新

这个模式在我们日常生活中可以说是太常见了!

比如手机上的天气预报,一旦气象局的信息进行了更新,手机上的天气信息就会相应的变化;

比如10086群发的消息,其实也是一个观察者模式的例子,每当10086发送一条消息时,所有的移动手机都会收到这个消息。而且一般消息中都会附带一个提醒“退订请回复T”,一旦回复了T,以后就不会接收到显10086对应的短信了

比如麦当劳吃炸鸡时,当一份食物准备好,就会通知“3045、3045、3045”请取餐,大家都能听到,但是可能只有一个人会去取餐,因为订阅者可以自行决定接收到消息之后动不动,或者说做什么;又比如…

观察者模式描述的就是订阅者和发布者之间的联系。其UML类图如下:

在这个下面给出订阅者和发布者的一个例子。

应用实例

借鉴《大话设计模式》的看门放哨的例子,我们来设计这样一个场景:

“一堂自习课时,小红、小蓝、小绿三人无心学习,各玩各的。坐在门口小黄在门口放哨,一旦看到班主任的身影,就敲一下桌子,其他三人应声而动,赶忙拿出书进行学习。当班主任走远了,小黄敲两下桌子,大家又开始愉快的玩耍…”

  • 主体接口

主体接口,又称为被观察者,采用接口的方式可以给具体的主体类实现自己的逻辑,如采用链表、数组、或者Map等结构存储观察者。

public interface Subject {// 增加观察者public void attach(Observer observer);// 删除观察者public void detach(Observer observer);// 通知所有观察者public void notifyObservers();// 主体(被观察者)状态public void setAction(String action);public String getAction();
}
  • 通知者接口

通知者接口主要是定义了一个接口,不同的通知者实现自己的消息逻辑:

public abstract class Observer {protected String name;protected Subject subject;public Observer(String name, Subject subject) {this.name = name;this.subject = subject;}public abstract void update();
}
  • 实际观察者(小红、小蓝、小绿)

分别实现三个同学:

public class Xiaohong extends Observer {public Xiaohong(String name, Subject subject) {super(name, subject);}@Overridepublic void update() {System.out.println(subject.getAction() + "\n" + name + "把小说藏起来!继续学习!");}
}
public class Xiaolan extends Observer {public Xiaolan(String name, Subject subject) {super(name, subject);}@Overridepublic void update() {System.out.println(subject.getAction() + "\n" + name + "把手机收起来!继续学习!");}
}
public class Xiaolv extends Observer {public Xiaolv(String name, Subject subject) {super(name, subject);}@Overridepublic void update() {System.out.println(subject.getAction() + "\n" + name + "把游戏机收起来!继续学习!");}
}
  • 实际发布者(小黄)

小黄观察老师的到来,通知大家:

public class Xiaohuang implements Subject {// 需要通知的同学列表private final List<Observer> observers = new LinkedList<>();private String action;// 添加通知同学@Overridepublic void attach(Observer observer) {observers.add(observer);}// 删除通知同学@Overridepublic void detach(Observer observer) {observers.remove(observer);}// 通知所有同学@Overridepublic void notifyObservers() {for (Observer observer : observers) {observer.update();}}// 获取通知状态@Overridepublic String getAction() {return action;}// 设置通知状态@Overridepublic void setAction(String action) {this.action = action;}
}
  • 运行客户端
public class App {public static void main(String[] args) {// 前台为通知者Xiaohuang xiaohuang = new Xiaohuang();Xiaohong observer1 = new Xiaohong("小红", xiaohuang);Xiaolv observer2 = new Xiaolv("小绿", xiaohuang);Xiaolan observer3 = new Xiaolan("小蓝", xiaohuang);// 需要通知三个xiaohuang.attach(observer1);xiaohuang.attach(observer2);xiaohuang.attach(observer3);// 设置通知状态xiaohuang.setAction("小心!Boss回来了!");// 发送通知xiaohuang.notifyObservers();}
}

结果如下:

总结

优点

  • 观察者模式实现了发布者和订阅者之间的松耦合:两个对象之间可以进行交互,但是不太清楚彼此之间的细节;
  • 适用于一个对象改变,相联系的对象随之发生相应变化的场景

缺点

  • 如果对象之间有循环依赖,在观察者模式下可能会引发循环调用,从而造成系统崩溃;

总而言之,当对象之间的关系类似与消息群发这样的一对多关系时,就可以开始考虑用不用观察者模式了。(都这个时候了,不用它还能用谁啊?)

参考资料

《Head First 设计模式》

《大话设计模式》

观察者模式——极客教程

http://www.yayakq.cn/news/695119/

相关文章:

  • 提供网站备案建设服务文本网站开发英文文献
  • 云阳营销型网站建设网络服务器是指为网络提供资源并对这些资源进行管理的计算机
  • 微信小程序 创建网站详情页设计逻辑
  • 哪家微网站建设免费微信小程序制作软件
  • 2017网站开发前景医药做网站
  • 百度云建站网站建设收录查询工具
  • 显示官网字样的网站怎么做去年做哪个网站能致富
  • 绵阳做手机网站什么是网页设计与制作课程的深度
  • 苏州好的做网站的公司有哪些wordpress 表单管理
  • 什么网站可以自己做房子设计做网站属于什么科目
  • 网站免费建站系统国内logo设计网站
  • 维护网站费用怎么做会计凭证怎么能将网站做的不简单
  • 北京网站建设佳v询 lotlek 能上词360全景地图下载安装
  • asp动态链接生成网站地图站长工具网址查询
  • 怎么仿别人的网站南京网站建设耐油橡胶板
  • 国外网站 dns科技企业网站
  • hs网站推广淘宝客网站必须备案吗
  • 广东建设网站网站广告动图怎么做的
  • 英德建设网站游戏网站制作
  • 绍兴市高速公路建设指挥部网站施工企业资质等级划分
  • 设计的网站都有哪些功能北京东道设计公司官网
  • wap网站制作沈阳妇科医院哪家好
  • 做啥网站能挣钱在网站建设中什么用于搭建页面结构
  • 简述网站主要流程南宁seo规则
  • 永久一级传奇网站企业公司如何做网站
  • 传播型网站建设优势有哪些可以做仿牌网站
  • 做网站像美团一样多少钱服务器租用多少钱
  • 站长之家seo查询官方网站视频制作素材网站
  • 科技部火炬中心seo关键词的选择步骤
  • 做水产的都用什么网站做业务的网站