摘要:
模式动机(Template Method Pattern):所谓模板,就是具有通用性的一个框架,在不同的具体环境下可以匹配不同的行为。在程序设计中,代码的复用一直是人们追求的目标,更好地利用已有的设计,不仅可以极大地提高开发效率,而且也能保证软件本身的鲁棒性。一种代码复用的基本原则就是继承机制,但是... 阅读全文
摘要:
模式动机(Iterator Pattern):对于聚合类的对象进行访问时,比如list,queue等,我们总希望有一个统一的访问接口,或者实现对多个聚合类对象的统一访问,或者实现对一个聚合类的多种不同访问方式,此时迭代器模式可以满足我们的这种需求。 迭代器就是在不暴露聚合类对象内部结构的前提下,对... 阅读全文
摘要:
模式动机(Memento Pattern):我们在编辑文档时,经常需要将刚删除的内容恢复过来,这时最常用的就是撤销命令(Ctrl + Z)了,但是这种功能是如何实现的呢? 可以猜想,其内部必然维护一个保存已删除内容的机制,这就是备忘录模式的用途了。 其实在软件开发过程中,为了不同模块之间的交互,... 阅读全文
摘要:
模式动机(Command Pattern):将请求封装为对象,从而可以用不同的请求对客户进行参数化;对请求进行排队或记录请求日志;设计可撤销的结构等,这些都是命令模式发挥作用的环境。核心思想是:定义一个抽象的Command接口以执行命令。具体如何执行需要其子类ConcreteCommand来实现。C... 阅读全文
摘要:
模式动机(Chain of Responsibility Pattern):对于某个请求,有多个接收者都可能处理,将这样的接收者链接成一个单向链表,根据不同的请求类型决定最终由哪个结点负责处理。不同结点需要维护一个指向下一个结点的链接,该链接可以通过构造结点时传入,也可以通过结点接口指定下一个接收结... 阅读全文
摘要:
模式动机(Proxy Pattern):引入一个代理对象负责对真实对象的访问。将代理对象和真实对象的公共接口提取出来,用Subject接口表示。具体结构图及其分析如下:模式结构图:模式代码:bt_代理模式.h: 1 #ifndef PP_H 2 #define PP_H 3 #include 4 ... 阅读全文
摘要:
模式动机(Flyweight Pattern):顾名思义,享元模式就是运用共享技术解决大量细粒度对象的复用问题。在享元模式中,由工厂负责维护一个享元池(Flyweight Pool),用于存储具有相同内部状态的一些对象。所谓内部状态,是指一个对象的特征,我们把大多数该类对象的不变特征确定为共享特征,... 阅读全文
摘要:
模式动机(Facade Pattern):在设计一个复杂系统时,一般会将其分解为若干个具有特定功能的子系统以便于分析设计,这样的话就会导致数量众多的子系统接口出现,使得与调用者的交互变得复杂了。解决办法是在所有子系统的上一层提供一个外观类(Facade),其负责对所有子系统的统一调用,客户只需和外观... 阅读全文
摘要:
模式动机(Decorator Pattern):我们在给一个类进行功能扩展时,总是通过继承或者复合关系,使得一个类具有其他相关类型的功能,继承本身属于静态关联,派生类比较臃肿,使用者也不能控制增加功能的方式。而使用复合机制,即将一个类的对象作为另一个类的成员,我们可以决定什么时候调用哪种功能,非常方... 阅读全文
摘要:
模式动机(Composite Pattern):将对象组合成树形结构来表示“整体-部分”层次。操作时,使得对部分的操作与对整体的操作具有一致性。模式结构图:典型的Composite结构为:模式代码:bt_组合模式.h: 1 #ifndef CP_H 2 #define CP_H 3 #include... 阅读全文