当前位置:C++技术网 > 资讯 > 关于观察者模式的总体概况的一些总结

关于观察者模式的总体概况的一些总结

更新时间:2016-01-17 21:43:08浏览次数:1+次

Observer(观察者模式):定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。

OBSERVER—想知道咱们公司最新MM情报吗?加入公司的MM情报邮件组就行了,tom负责搜集情报,他发现的新情报不用一个一个通知我们,直接发布给邮件组,我们作为订阅者(观察者)就可以及时收到情报啦


所涉及的原则:

为了交互对象之间的松耦合设计而努力


类图:


Observer模式的角色:
Subject(被观察者)
    被观察的对象。当需要被观察的状态发生变化时,需要通知队列中所有观察者对象。Subject需要维持(添加,删除,通知)一个观察者对象的队列列表。
ConcreteSubject
    被观察者的具体实现。包含一些基本的属性状态及其他操作。
Observer(观察者)
    接口或抽象类。当Subject的状态发生变化时,Observer对象将通过一个callback函数得到通知。
ConcreteObserver
    观察者的具体实现。得到通知后将完成一些具体的业务逻辑处理。


并且,java的jdk中有类似的api可以供我们来使用。

典型例子:,用户界面可以作为一个观察者,业务数据是被观察者,用户界面观察业务数据的变化,发现数据变化后,就显示在界面上。面向对象设计的一个原则是:系统中的每个类将重点放在某一个功能上,而不是其他方面。一个对象只做一件事情,并且将他做好。观察者模式在模块之间划定了清晰的界限,提高了应用程序的可维护性和重用性。

观察者设计模式定义了对象间的一种一对多的依赖关系,以便一个对象的状态发生变化时,所有依赖于它的对象都得到通知并自动刷新。


个人理解:agent2d中的世界模型,大概就是设计到了观察者模式。世界模型中的每一次变化,都会更新里面的一些内容。而每一个球员会获得自己所观察到的世界模型。然后根据世界模型进行判断处理,利用机器学习算法来处理这些信息,最终执行好的决策。