《Head First 设计模式》笔记3
装饰者模式(Decorate)
动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。
设计原则四:类应该对扩展开放,对修改关闭。
如果使用过 Python,应该听过装饰器,虽然概念有点不同,但都是通过动态添加的方式给对象扩展功能。
动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。
设计原则四:类应该对扩展开放,对修改关闭。
如果使用过 Python,应该听过装饰器,虽然概念有点不同,但都是通过动态添加的方式给对象扩展功能。
与归并排序一样,快速排序也使用了分治思想,下面是对一个典型的子数组 A[low … high] 进行快速排序的三步分支过程:
判断空栈:
1 | stack_empty(S) |
压栈:
1 | push(S, x) |
弹栈:
1 | pop(S) |
递归查找:
1 | tree_search(root, k) |
旋转:
1 | left_rotate(T, root) |
插入:
定义了对象之间的一对多依赖,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。
我们先来了解一下报纸和杂志的订阅是怎么回事:
在观察者模式中,出版者报社 = 主题(subject),而我们订阅者 = 观察者(observer)。
(二叉)堆是一个数组,它可以被看成一个近似的完全二叉树(除了最底层,该树是完全满的,而且是从左到右填充)。
表示堆的数组 A 包括两个属性: