本帖最后由 晴雯晴雯 于 2017-9-24 23:21 编辑
http://blog.csdn.net/lcl_data/article/details/9208561
原文地址,我参考的就是这篇
简单的理解就是,观察者会记住通知者的指针,方便以后去找观察者所需要的通知(Notify存在于通知者中);而通知者会用一个栈来记住所有的观察者的指针,每新建一个观察者就会入一次栈。当需要通知时,遍历栈,调用每个栈中观察者的Updata函数,去通知观察者。
主要优缺点 由于被观察者和观察者没有紧密地耦合在一起,因此它们可以属于不同的抽象化层次。 观察者模式支持广播通信。被观察者会向所有的登记过的观察者发出通知。 如果一个被观察者对象有很多直接和间接的观察者的话,将所有的观察者都通知到会花费很多时间。
本程序不足之处:
有内存泄漏,就是有的地方申请了内存但在用完之后没有销毁,在这个例子中没事,但如果实际长时间应用中会因为内存不足而最终退出。
栈用的是官方论坛下载的栈类
同时由于易语言对指针和类的支持不太好,也搜索了一些特殊的方法,但不影响整个程序的理解。
观察者模式.e
(10.45 KB, 下载次数: 10)
|