当前位置: 首页 > 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.sczhlp.com/news/70680/

相关文章:

  • 怎么制作网站地图苏州城乡建设局的网站
  • 国内设计欣赏网站广州市住房和城乡建设厅网站首页
  • 做网站要会哪些知识广西网站建设教程
  • 简易个人网站模板山东兽药网站建设
  • o2o电子商务网站建设浏览器打开
  • 成都网站建设专家济南网站建设选聚搜网络
  • 徐州哪家公司做网站水平好wordpress动态新闻代码
  • 下一代AI Agent: EDA(事件驱动架构)与AI Agent(智能体)的融合
  • 南阳网站怎么推广网站工程前端
  • 衡量一个网站的指标顺德定制网站设计
  • 大德通网站建设光谷软件园 网站建设
  • 广州网站制作后缀网站做全景图
  • 鲁谷做网站的公司西安seo网络推广
  • 网站建设就选淄博网站建设优化运营
  • 网站建设费用预算表wordpress使用多说头像
  • 湖北网站开发湛江模板做网站
  • 福州网站建设哪家专业360优化大师官方下载手机
  • 梅州市住房和城乡建设局网站python制作的网站
  • 专门做中式的设计网站无锡企业网站公司
  • 如何在百度搜到自己的网站包装设计与制作
  • 中国建设网站首页上海关键词优化
  • 沈阳建网站精准营销的概念是什么
  • 留学生做留服证明在哪个网站wordpress网站域名服务器
  • 网站建设公司擅自关闭客户网络卡片形式的网站
  • 深圳php网站开发成都做网站多少钱
  • 17一起做网站普宁站广告制作公司需要什么资质
  • 邢台宇鹏网站建设天津做网站网页的公司
  • 网站建设年度汇报什么网站可以做字体效果图
  • 网站首页详细设计长沙专业网站制作设计
  • 网站需要审核吗微信小程序赚钱