观察者模式
1.主题subject
subject中有一个链表,用来存放已经注册的observer对象,这样数据改变的时候就可以在notice里面实现通知所有observer了。
既然是list,那么数据类型应该是相同的,所以不可以创建公告牌A,公告牌B等不同的类型。
书中给出,创建observer类,里面只有一个update,公告牌继承observer类。
链表的类型是基类observer指针,注册的时候基类指针指向派生类,实现了多态性!
2. 我给出的方案是:
创建observer类作为基类,里面有update和display函数,不同公告牌继承observer类;
链表指针都是observer指针,可以作为list元素,由于指向不同派生类,还可以实现各自的结构(通过多态性实现)。
这种共性和差异性都体现出来了!
——observer(和observable)作为组件,和公告牌类分开更好,不然公告牌有其他功能,还需要修改observer,耦合性增加。
3. JAVA的接口类似C++的虚基类
既然C++的接口和普通类没有区分那么明显,
在学习面向接口编程思想的基础上,就不要太拘泥于形式了。
本文来自博客园,作者:moonのsun,转载请注明原文链接:https://www.cnblogs.com/moon-sun-blog/p/10618779.html

浙公网安备 33010602011771号