[设计模式] 观察者( Observer )模式学习笔记

最近在学习node.js,里面讲到node.js的事件机制使用了观察者模式,因此来学习一下。

观察者模式的目的是定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

因此观察者模式又叫发布-订阅模式。

下面放一个简化之后的例子:

 

update:怪不得觉得熟悉,原来Qt的信号槽机制Signals_and_slots 就是使用了观察者模式。

参考资料:

观察者模式-菜鸟教程

我所理解的设计模式(C++实现)——观察者模式(Observer Pattern)

[设计模式] 组合模式(composite) 学习笔记

目的是忽略单一对象和组合对象的不同。 有点像以前写过的用链表定义一个树结构,每个节点是一个val + 多个*tree 。如果某个节点是叶子节点了,那么对应的*tree都为NULL. 只不过这里用了更加面向对象的实现。

具体看代码:

 

最后打印的结果为:

root 1
Leaf A 2
Leaf B 2
Composite X 2
Leaf XA 3
Leaf XB 3
Composite XY 3
Leaf XYA 4
Leaf XYB 4