设计模式2:观察者模式

1.主题subjectjava

subject中有一个链表,用来存放已经注册的observer对象,这样数据改变的时候就能够在notice里面实现通知全部observer了。编程

既然是list,那么数据类型应该是相同的,因此不能够建立公告牌A,公告牌B等不一样的类型。函数

书中给出,建立observer类,里面只有一个update,公告牌继承observer类。学习

这样逻辑有点乱,观察者里面为何只有一个update呢?恐怕只是为了做为list的成员才单独实现的observer吧?指针

 

2. 我给出的方案是:server

建立observer类做为基类,里面有update和display函数,不一样公告牌继承observer类;对象

链表指针都是observer指针,能够做为list元素,因为指向不一样派生类,还能够实现各自的结构(经过多态性实现)。继承

这种共性和差别性都体现出来了!接口

 

3.observer能够是接口吗?基础

接口是用来实现的,类是用来继承的。

这里明显是继承了observer,并具备成员变量,并不像以前接口那样,里面只有单独的一个函数。

因此observer不符合java中关于接口的定义。

可是,observer彻底实现了接口的功能,能够实现:

当公告牌类的数目和类型发生变化的时候,并不须要从新写与接口相关的调用。

 

4.结论

因此,既然C++的接口和普通类没有区分那么明显,

在学习面向接口编程思想的基础上,就不要太拘泥于形式了。

相关文章
相关标签/搜索