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

黑龙江建设银行网站开发公司更换物业公司的请示

黑龙江建设银行网站,开发公司更换物业公司的请示,开发app怎么盈利,软件设计师证书含金量观察者模式是一种行为型设计模式#xff0c;它定义了一种一对多的依赖关系#xff0c;当一个对象的状态发生改变时#xff0c;其所有依赖者都会收到通知并自动更新。 当对象间存在一对多关系时#xff0c;则使用观察者模式。比如#xff0c;当一个对象被修改时#xff0…观察者模式是一种行为型设计模式它定义了一种一对多的依赖关系当一个对象的状态发生改变时其所有依赖者都会收到通知并自动更新。 当对象间存在一对多关系时则使用观察者模式。比如当一个对象被修改时则会自动通知依赖它的对象。观察者模式属于行为型模式。 意图定义对象间的一种一对多的依赖关系当一个对象的状态发生改变时所有依赖于它的对象都得到通知并被自动更新。 主要解决一个对象状态改变给其他对象通知的问题而且要考虑到易用和低耦合保证高度的协作。 何时使用一个对象目标对象的状态发生改变所有的依赖对象观察者对象都将得到通知进行广播通知。 如何解决使用面向对象技术可以将这种依赖关系弱化。 关键代码在抽象类里有一个 ArrayList 存放观察者们。 应用实例 1、拍卖的时候拍卖师观察最高标价然后通知给其他竞价者竞价。 2、西游记里面悟空请求菩萨降服红孩儿菩萨洒了一地水招来一个老乌龟这个乌龟就是观察者他观察菩萨洒水这个动作。 优点 1、观察者和被观察者是抽象耦合的。 2、建立一套触发机制。 缺点 1、如果一个被观察者对象有很多的直接和间接的观察者的话将所有的观察者都通知到会花费很多时间。 2、如果在观察者和观察目标之间有循环依赖的话观察目标会触发它们之间进行循环调用可能导致系统崩溃。 3、观察者模式没有相应的机制让观察者知道所观察的目标对象是怎么发生变化的而仅仅只是知道观察目标发生了变化。 使用场景 一个抽象模型有两个方面其中一个方面依赖于另一个方面。将这些方面封装在独立的对象中使它们可以各自独立地改变和复用。一个对象的改变将导致其他一个或多个对象也发生改变而不知道具体有多少对象将发生改变可以降低对象之间的耦合度。一个对象必须通知其他对象而并不知道这些对象是谁。需要在系统中创建一个触发链A对象的行为将影响B对象B对象的行为将影响C对象……可以使用观察者模式创建一种链式触发机制。 注意事项 1、JAVA 中已经有了对观察者模式的支持类。 2、避免循环引用。 3、如果顺序执行某一观察者错误会导致系统卡壳一般采用异步方式。 观察者模式包含以下几个核心角色 主题Subject也称为被观察者或可观察者它是具有状态的对象并维护着一个观察者列表。主题提供了添加、删除和通知观察者的方法。观察者Observer观察者是接收主题通知的对象。观察者需要实现一个更新方法当收到主题的通知时调用该方法进行更新操作。具体主题Concrete Subject具体主题是主题的具体实现类。它维护着观察者列表并在状态发生改变时通知观察者。具体观察者Concrete Observer具体观察者是观察者的具体实现类。它实现了更新方法定义了在收到主题通知时需要执行的具体操作。 观察者模式通过将主题和观察者解耦实现了对象之间的松耦合。当主题的状态发生改变时所有依赖于它的观察者都会收到通知并进行相应的更新。 Subject subject new Subject();new HexaObserver(subject);new OctalObserver(subject);new BinaryObserver(subject);System.out.println(First state change: 15); subject.setState(15);System.out.println(Second state change: 10); subject.setState(10); public class Subject {private ListObserver observers new ArrayListObserver();private int state;public int getState() {return state;}public void setState(int state) {this.state state;notifyAllObservers();}public void attach(Observer observer){observers.add(observer);}public void notifyAllObservers(){for (Observer observer : observers) {observer.update();}} }public class OctalObserver extends Observer{public OctalObserver(Subject subject){this.subject subject;this.subject.attach(this);}Overridepublic void update() {System.out.println( Octal String: Integer.toOctalString( subject.getState() ) );} } public class HexaObserver extends Observer{public HexaObserver(Subject subject){this.subject subject;this.subject.attach(this);}Overridepublic void update() {System.out.println( Hex String: Integer.toHexString( subject.getState() ).toUpperCase() );} } public class BinaryObserver extends Observer{public BinaryObserver(Subject subject){this.subject subject;this.subject.attach(this);}Overridepublic void update() {System.out.println( Binary String: Integer.toBinaryString( subject.getState() ) );} } Testpublic void test20(){Subject subject new Subject();new HexaObserver(subject);new OctalObserver(subject);new BinaryObserver(subject);System.out.println(First state change: 15);subject.setState(15);System.out.println(Second state change: 10);subject.setState(10);}/* First state change: 15 Hex String: F Octal String: 17 Binary String: 1111 Second state change: 10 Hex String: A Octal String: 12 Binary String: 1010*/
http://www.yutouwan.com/news/349026/

相关文章:

  • 厦门制作网站哪家好网站搭建玩要多长时间
  • 新网站做seo做简历的网站叫什么软件
  • 网站基本架构设计的主要步骤设计优秀的网站推荐
  • 阜阳做网站的商户网络运维与安全
  • 优化网站seo多梦wordpress
  • 网站域名注册价格百度手机助手下载
  • 我的世界封面制作网站东营网站建设关键字排名问题
  • 专业做棋牌网站的金华市金东区建设局网站
  • 菏泽官方网站sem是什么?
  • 做公司网站详细步骤苏州老字号企业官方的网站策划书
  • 什么是网站挂马北京北控京奥建设有限公司网站
  • 招生处网站建设方案如何自己办网站
  • seo站群系统做ppt时网站怎么设计
  • 大石网站建设昆明网站建设方案外包
  • 有限公司网站建设 互成网络地址 四川成都网站制作是什么
  • asp网站制作教程学中文网站
  • 山西做网站的企业php网站插件删除或添加
  • 佛山做推广网站的茂名网站建设维护
  • 用jsp怎么做的购物网站给公司做门户网站多少钱
  • 哪个网站可以免费建站网站开发语言分为几种
  • 电脑网站自适应怎么做制作个人主页
  • 网站首页下拉广告新东方在线教育平台官网
  • 最好的做网站丽水专业做网站
  • 如何查网站是否备案教育培训网站开发
  • 天动力网站开发口碑好的网站建设价格
  • 快速做网站公司哪家专业seo专员工资一般多少
  • 做网站用的腾讯云服务器做服装店网站的素材
  • 专业网站建设市场做商城网站要什么手续费
  • 做自己的网站的一般步骤深圳vi设计公司联系
  • 校园网站的建设作用网页编辑平台