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

上海外贸营销网站建设怀化买房网站

上海外贸营销网站建设,怀化买房网站,横岗做网站公司,建设文明网站包括观察者模式是软件开发中常用的一种设计模式,它通过定义一对多的依赖关系,使得一个对象(主题)的状态变化可以通知多个其他对象(观察者)。 这种模式的优点是解耦和增加扩展性,用于实现对象之间的…

观察者模式是软件开发中常用的一种设计模式,它通过定义一对多的依赖关系,使得一个对象(主题)的状态变化可以通知多个其他对象(观察者)。

这种模式的优点是解耦和增加扩展性,用于实现对象之间的松耦合通信。

如果要自己编码实现,我们通常定义一个主题接口(Subject)和一个观察者接口(Observer)。主题接口中包含注册观察者、移除观察者和通知观察者的方法,而观察者接口中则定义了更新状态的方法。具体的主题类和观察者类实现这些接口,并进行相应的业务逻辑实现。

考虑到实现简单点,我们假定有一个广播类,这个广播类实际上就是一个主题Subject,有多个听众收听这个广播,这里每个听众就是一个观察者Observer

定义一个主题Subject的接口类

/*** 主题,被观察者*/
public interface Subject {/*** 添加观察者*/void addObserver(Observer observer);/*** 移除观察者*/void removeObserver(Observer observer);/*** 通知观察者*/void notifyObserver(String message);
}

定义一个观察者Observer的接口类

/*** 观察者*/
public interface Observer {void recieve(String message);}

接下来,就是定义一个广播的类,用来实现主题接口 

/*** 广播,负责向听众广播消息*/
public class Broadcast implements Subject{private final List<Observer> observerList = new ArrayList<>();@Overridepublic void addObserver(Observer observer) {observerList.add(observer);}@Overridepublic void removeObserver(Observer observer) {observerList.remove(observer);}@Overridepublic void notifyObserver(String message) {for (Observer observer : observerList) {observer.recieve(message);}}
}

再定义一个听众类,用来实现观察者接口

public class Audience implements Observer {private final String name;public Audience(String name) {this.name = name;}@Overridepublic void recieve(String message) {System.out.println(name + " received message: " + message);}
}

 写一个测试类来测试结果

public class Test {public static void main(String[] args) {Broadcast broadcast = new Broadcast();Audience audience1 = new Audience("哈尔滨听众");Audience audience2 = new Audience("大庆听众");broadcast.addObserver(audience1);broadcast.addObserver(audience2);broadcast.notifyObserver("中央电视台黑龙江电视台");broadcast.notifyObserver("黑龙江电视台中央电视台");broadcast.removeObserver(audience2);broadcast.notifyObserver("大庆听众关了广播");}}

结果打印如下 

解释一下,广播了两拨消息,2名听众都收到了这两拨消息。后面移除了一个听众,广播了第三波消息,这时,只有剩下的那个听众收到了广播消息

http://www.sczhlp.com/news/119019/

相关文章:

  • wordpress创建网站清溪镇仿做网站
  • 中企动力网站建设福州优化广告公司
  • 阿里巴巴网站官网网站访问速度
  • 自己家开了一家装修公司怎么做装修网站湘潭网站建设方案表格
  • 家谱网站源码下载甘肃省水利工程建设网站
  • 更换网站备案网站推广外贸
  • 360免费创建个人网站外贸多语言网站
  • 网站建设品牌营销网站建设 500强建站
  • 长春网站建设方案策划app动效网站
  • C#中避免GC压力和提高性能的8种技术
  • 如何做网站效果图室内设计效果图及文字介绍
  • 如何制作单页网站找什么公司做网站
  • 网站建设怎么更改图片教学互动网站开发背景
  • 网站建设维保合同温州网站设计公司
  • 嘉兴做网站优化的公司淘宝数据查询
  • ctfshow web入门 爆破
  • 函数内联
  • 商家建设网站的好处你就知道
  • 律师的网站模板陕西百度公司
  • 企业建站报价护肤网站模版
  • 为什么网站后台怎么换图片网站开发会用到定时器功能
  • 编程一小时网站开发公司多收公共维修基金情况说明
  • 商务网站建设怎样收费贷款网站建设
  • 公司网站内容编辑网推啥意思
  • 网站开发 哪种效率高做第三方支付网站违法吗
  • 网站seo 教程wordpress主题添加
  • 陕西省建设执业资格注册管理中心网站网站建设就是学淘宝吗
  • 网站维护外包合同网站建设及网络营销
  • 7. Innodb底层原理与Mysql日志机制深入剖析
  • 虚拟空间能建多个网站网站设计制作平台哪个好