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

关于建设教体局网站的申请免费秒玩小游戏

关于建设教体局网站的申请,免费秒玩小游戏,项目计划书模板范文 完整版,免费建筑设计素材网站2019独角兽企业重金招聘Python工程师标准 观察者模式 当对象间存在一对多关系时#xff0c;则使用观察者模式#xff08;Observer Pattern#xff09;。比如#xff0c;当一个对象被修改时#xff0c;则会自动通知它的依赖对象。观察者模式属于行为型模式。… 2019独角兽企业重金招聘Python工程师标准 观察者模式 当对象间存在一对多关系时则使用观察者模式Observer Pattern。比如当一个对象被修改时则会自动通知它的依赖对象。观察者模式属于行为型模式。 介绍 意图定义对象间的一种一对多的依赖关系当一个对象的状态发生改变时所有依赖于它的对象都得到通知并被自动更新。 主要解决一个对象状态改变给其他对象通知的问题而且要考虑到易用和低耦合保证高度的协作。 何时使用一个对象目标对象的状态发生改变所有的依赖对象观察者对象都将得到通知进行广播通知。 如何解决使用面向对象技术可以将这种依赖关系弱化。 关键代码在抽象类里有一个 ArrayList 存放观察者们。 应用实例 1、拍卖的时候拍卖师观察最高标价然后通知给其他竞价者竞价。 2、西游记里面悟空请求菩萨降服红孩儿菩萨洒了一地水招来一个老乌龟这个乌龟就是观察者他观察菩萨洒水这个动作。 优点 1、观察者和被观察者是抽象耦合的。 2、建立一套触发机制。 缺点 1、如果一个被观察者对象有很多的直接和间接的观察者的话将所有的观察者都通知到会花费很多时间。 2、如果在观察者和观察目标之间有循环依赖的话观察目标会触发它们之间进行循环调用可能导致系统崩溃。 3、观察者模式没有相应的机制让观察者知道所观察的目标对象是怎么发生变化的而仅仅只是知道观察目标发生了变化。 使用场景 一个抽象模型有两个方面其中一个方面依赖于另一个方面。将这些方面封装在独立的对象中使它们可以各自独立地改变和复用。一个对象的改变将导致其他一个或多个对象也发生改变而不知道具体有多少对象将发生改变可以降低对象之间的耦合度。一个对象必须通知其他对象而并不知道这些对象是谁。需要在系统中创建一个触发链A对象的行为将影响B对象B对象的行为将影响C对象……可以使用观察者模式创建一种链式触发机制。注意事项 1、JAVA 中已经有了对观察者模式的支持类。 2、避免循环引用。 3、如果顺序执行某一观察者错误会导致系统卡壳一般采用异步方式。 实现 观察者模式使用三个类 Subject、Observer 和 Client。Subject 对象带有绑定观察者到 Client 对象和从 Client 对象解绑观察者的方法。我们创建 Subject 类、Observer 抽象类和扩展了抽象类 Observer 的实体类。 ObserverPatternDemo我们的演示类使用 Subject 和实体类对象来演示观察者模式。            步骤 1 创建 Subject 类。 // 被观察者 class Subject{ private:listObserver * _observers;int _state;public:int GetState(){return _state;}void SetState(int state){_state state;NotifyAllObservers();}void Attach(Observer * observer){_observers.push_back(observer);}void NotifyAllObservers(){listObserver*::iterator iter _observers.begin();for(;iter ! _observers.end();iter){(*iter)-update();}} }; 步骤 2 创建 Observer 类。 class Subject;class Observer{ protected:Subject * _subject;public:Observer(Subject *subject) : _subject(subject) {}virtual ~Observer(){}virtual void update() 0; };步骤 3 创建实体观察者类。 class BinaryObserver : public Observer{ public:BinaryObserver(Subject *subject) : Observer(subject) {_subject-Attach(this);}void update() override {std::cout Binary string : _subject-GetState() std::endl;} };class OctalObserver : public Observer{ public:OctalObserver(Subject *subject) : Observer(subject) {_subject-Attach(this);}void update() override {std::cout Octal String: _subject-GetState() std::endl;} };class HexaObserver : public Observer{ public:HexaObserver(Subject *subject) : Observer(subject) {_subject-Attach(this);}void update() override {std::cout Hex String: _subject-GetState() std::endl;} }; 步骤 4 使用 Subject 和实体观察者对象。 Subject * subject new Subject();Observer * o1 new BinaryObserver(subject);Observer * o2 new OctalObserver(subject);Observer * o3 new HexaObserver(subject);subject-SetState(1);subject-SetState(3); 步骤 5 验证输出。 Binary string :1 Octal String:1 Hex String:1 Binary string :3 Octal String:3 Hex String:3转载于:https://my.oschina.net/fileoptions/blog/1823508
http://www.yutouwan.com/news/166932/

相关文章:

  • 宜昌市网站建设app平台运营模式
  • 网站搭建品牌wordpress font google
  • 建设网站公司怎么建站seo模拟点击算法
  • ps制作网站教程跨境电商平台培训哪家最正规
  • 做电影网站要不要收费东莞城建局电话是多少
  • 网站建设是否需形成无形资产做商城网站数据库分类该有哪些
  • 点的排版设计网站开发高端网站开发
  • 南昌企业建站系统购物网站建设目标
  • 制作网站收费pc蛋蛋网站怎么做
  • 用DW 做响应式网站淘宝官网首页注册账号
  • 儿童网站源码开发网站需要注意
  • 购物网站页面布局备案的网站必须打开吗
  • 亚马逊怎么做网站推广广东个人 网站备案
  • 免费发布产品信息的网站专业营销型网站建设费用
  • 网站开发重庆电影网站怎么做要多少钱
  • wordpress建站模板下载官方网站开发用什么语言
  • 贵州网站推广电话淄博网站推广公司
  • 网站开发方倍工作室全国信息公示系统官网
  • 网站服务器租用价格 贴吧护肤品网站建设需求分析
  • 支付宝网站登录入口部标平台软件网站开发
  • 网站建设和编程wordpress 样式插件
  • 广告设计的基本流程步骤百度关键词seo
  • 北京哪家公司做网站好网站开发费用无形资产
  • 东莞制作公司网站做网站公司价格多少
  • 郑州企业网站托管公司wordpress文章点赞
  • 哪种语言做网站好免费房屋建设图纸网站有哪些
  • 替朋友做网站免费做logo设计的网站
  • 焊接加工东莞网站建设建设营销型网站的步骤
  • 建设牌官方网站最新经济新闻及其评论
  • 成都网站seo域名注册需要资料