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

珠海门户网站建设哪家好热门网站

珠海门户网站建设哪家好,热门网站,丹阳建设局官方网站,高毅资产网站谁做的定义: 观察者模式又叫发布订阅模式,它定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。 组成: Subject(通知者/被观察者)&#…

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

组成
Subject(通知者/被观察者):指代的就是那个被观察者,通常由接口或者抽象类实现,常见方法有addObserver/deleteObserver方法用来增删观察者,notifyObservers状态改变时通知观察者
ConcreteSubject (具体通知者/被观察者):这个就是具体的被观察者类,实现上面的Subject接口
Observer (观察者):就是观察Subject的观察者,是个接口,只有1个update()方法,被观察者改变时会被调用,也就是说它可以通过这个方法来获取到被观察者的状态更新
ConcreteObserver (具体观察者类):实现上面的Observer接口

适用场景
当一个对象状态发生改变,会导致其他对象都发生改变

例子

(Subject.java)
public interface Subject {void addObserver(Observer observer);void deleteObserver(Observer observer);void notifyObservers();void publicNews(String news);
}(ConcreteSubject.java)
public class ConcreteSubject implements Subject {private ArrayList<Observer> observers;private String news;public ConcreteSubject() {observers = new ArrayList<>();}@Overridepublic void addObserver(Observer observer) {observers.add(observer);}@Overridepublic void deleteObserver(Observer observer) {int i = observers.indexOf(observer);if (i >= 0) {observers.remove(i);}}@Overridepublic void notifyObservers() {for (Observer observer : observers) {observer.update(this, news);}}public void publicNews(String news) {this.news = news;notifyObservers();}
}(Observer.java)
public interface Observer {void update(Subject o, Object arg);
}(ConcreteObserver.java)
public class ConcreteObserver implements Observer{private Subject subject;public ConcreteObserver(Subject subject){this.subject = subject;this.subject.addObserver(this);}@Overridepublic void update(Subject o, Object arg) {System.out.println("收到的新闻: "+ arg);}
}(TestClient.java)
public class TestClient {public static void main(String[] args) {Subject subject = new ConcreteSubject();new ConcreteObserver(subject);subject.publicNews("今天我们的生活怎么样?");subject.publicNews("为什么有人骑在我们的脖子上?");}
}

以上代码是我们手动实现的观察者模式,其实观察者模式在jdk代码里也有非常多的应用,而且jdk内置了观察者模式的实现,详见java.util.Observable和java.util.Observer。以下是一些该模式的要点:

1、该模式定义了对象之间一对多的关系。
2、主题(被观察者)用一个共同的接口来更新观察者。
3、有多个观察者时,不可以依赖特定的通知顺序。
4、使用此模式时,你可以从被观察者处推(push)或拉(pull)数据,然后推的方式被认为是更合理的操作。
5、观察者和被观察者之间松耦合,被观察者不知道观察者的细节,只知道观察者实现了观察者接口。

http://www.wangmingla.cn/news/68650.html

相关文章:

  • 十堰微网站建设领硕网站seo优化
  • wordpress标签组合怎样优化网站排名
  • 做uml图网站网络营销师有前途吗
  • 如何将别人的网站作为自己的武汉百度快速排名提升
  • 德州网站建设费用百度搜索广告投放
  • 网站模板怎么替换万网域名注册官网阿里云
  • 做网站去哪里备案如何制作网站和网页
  • 视觉品牌网站建设论坛推广案例
  • 网站登陆页面怎么做可免费投放广告的平台
  • 晋中网站建设哪家强日结app推广联盟
  • 服务器IP做网址打开网站关键词seo如何优化
  • 做美食教程的网站有哪些怎么优化关键词排名优化
  • 养生网站源码网络市场的四大特点
  • 通辽网站开发百度怎么推广网站
  • 企业网站做推广广点通广告投放平台
  • 网站开发印花税临沂百度公司地址
  • 初次建设网站的技巧微博营销成功案例8个
  • 郑州做系统集成的公司网站windows优化大师是病毒吗
  • 怎么做卖东西的网站东莞网站建设优化推广
  • 网站建设教程在线网站优化费用报价明细
  • 做销售怎么找优质资源网站最新国际新闻事件今天
  • wap网站建设方案万网域名注册教程
  • 可以做图接单的网站申泽seo
  • 网站建设工作函搜索引擎优化的英文
  • 深圳专业营销网站设计网上营销是干什么的
  • 深圳网站建设工作室百度自动点击器怎么用
  • 什么网站做蔬菜生鲜比较好江苏提升关键词排名收费
  • wordpress 模板代码seo基础理论
  • 网站没有做404页面河南疫情最新消息
  • 做网站用小动画浙江seo关键词