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

优势网网站蚂蜂窝网站分析

优势网网站,蚂蜂窝网站分析,网站可信认证,网站如何申请微信支付目录 一. 前言 二. 实现 三. 优缺点 一. 前言 观察者模式属于行为型模式。在程序设计中,观察者模式通常由两个对象组成:观察者和被观察者。当被观察者状态发生改变时,它会通知所有的观察者对象,使他们能够及时做出响应&#xf…

目录

一. 前言

二. 实现

三. 优缺点


一. 前言

    观察者模式属于行为型模式。在程序设计中,观察者模式通常由两个对象组成:观察者和被观察者。当被观察者状态发生改变时,它会通知所有的观察者对象,使他们能够及时做出响应,所以也被称作“发布-订阅模式”。

二. 实现

主题(Subject)具有注册和移除观察者、并通知所有观察者的功能,主题是通过维护一张观察者列表来实现这些操作的。
观察者(Observer)的注册功能需要调用主题的 registerObserver() 方法。

案例:天气数据布告板会在天气信息发生改变时更新其内容,布告板有多个,并且在将来会继续增加。

public interface Subject {void resisterObserver(Observer o);void removeObserver(Observer o);void notifyObserver();
}
public class WeatherData implements Subject {private List<Observer> observers;private float temperature;private float humidity;private float pressure;public WeatherData() {observers = new ArrayList<>();}public void setMeasurements(float temperature, float humidity, float pressure) {this.temperature = temperature;this.humidity = humidity;this.pressure = pressure;notifyObserver();}@Overridepublic void resisterObserver(Observer o) {observers.add(o);}@Overridepublic void removeObserver(Observer o) {int i = observers.indexOf(o);if (i >= 0) {observers.remove(i);}}@Overridepublic void notifyObserver() {for (Observer o : observers) {o.update(temperature, humidity, pressure);}}
}
public interface Observer {void update(float temp, float humidity, float pressure);
}
public class StatisticsDisplay implements Observer {public StatisticsDisplay(Subject weatherData) {weatherData.resisterObserver(this);}@Overridepublic void update(float temp, float humidity, float pressure) {System.out.println("StatisticsDisplay.update: " + temp + " " + humidity + " " + pressure);}
}
public class CurrentConditionsDisplay implements Observer {public CurrentConditionsDisplay(Subject weatherData) {weatherData.resisterObserver(this);}@Overridepublic void update(float temp, float humidity, float pressure) {System.out.println("CurrentConditionsDisplay.update: " + temp + " " + humidity + " " + pressure);}
}
public class WeatherStation {public static void main(String[] args) {WeatherData weatherData = new WeatherData();CurrentConditionsDisplay currentConditionsDisplay = new CurrentConditionsDisplay(weatherData);StatisticsDisplay statisticsDisplay = new StatisticsDisplay(weatherData);weatherData.setMeasurements(0, 0, 0);weatherData.setMeasurements(1, 1, 1);}
}
CurrentConditionsDisplay.update: 0.0 0.0 0.0
StatisticsDisplay.update: 0.0 0.0 0.0
CurrentConditionsDisplay.update: 1.0 1.0 1.0
StatisticsDisplay.update: 1.0 1.0 1.0

三. 优缺点

优点
1. 被观察者和观察者对象之间不需要知道对方的具体实现,只需要知道对方的接口,避免了紧耦合的关系。
2. 由于被观察者对象并不关心具体的观察者是谁,所以在程序运行的过程中,可以动态地增加或者删除观察者对象,增加了灵活性。
3. 符合开闭原则,当需要添加新的观察者时,只需要添加一个实现观察者接口的类,而不需要修改被观察者对象的代码。
缺点
1. 当观察者没有被正确移除时,可能会导致内存泄漏的问题。
2. 实现观察者模式,需要定义多个接口和类,增加了程序的复杂度。
3. 在某些情况下,被观察者和观察者对象之间可能出现循环依赖的问题。

JDK中的命令模式
java.util.Observer
java.util.EventListener
javax.servlet.http.HttpSessionBindingListener

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

相关文章:

  • 太仓建设银行网站重庆最好的网站建设公司
  • 门户网站建设工作室中国企业500强最新排名
  • 专业网站开发多少钱wordpress设置多语言
  • 电子商务如何做网站销售诸城做网站的
  • 网站建设平台 汉龙黄岩城乡住房和建设局网站
  • 网站的空间与域名企业文化墙创意设计图
  • 怎么查询网站备案接入商做盗版系统网站会不会
  • 济南网站建设求职wordpress密码无法重置密码
  • 南阳网站备案wordpress open sans
  • 织梦网站统计oa办公系统软件
  • 景德镇建设企业网站网站关键词之间
  • 网站流程图设计中国新闻社浙江分社
  • 推广网站的形式包括.net 网站源码下载
  • 简要说明开发网站的步骤重庆本地网站有哪些
  • 网站建设用的什么语言设计之窗网站
  • 资讯类网站建设怎样凡科建设网站
  • 本地上海集团网站建设东莞ui设计公司
  • 合肥制作手机网站seo网站推广作用
  • 电影网站html源码网站外链软件
  • 专业做网站设计网站建设有几大板块
  • 无锡网站推广优化费用wordpress固定链接设置后404
  • html购物网站模板沟通交流类网站有哪些
  • 百度权重3的网站值多少动漫视频网站开发
  • 诸葛企业网站建设公司网站开发如何实现数据库的链接
  • 网站建设流程 知乎手机版网站版面设计怎么做
  • 后台网站开发文档爱情动作片做网站
  • 住房和城乡建设部政务服务门户网站恩做网站动态页面好
  • 石家庄网站怎么建设国外家装设计网站
  • 公司网站模板 网盘下载广州网络营销学校
  • 品网站建设手机备案网站