迎来本课程的终结,学习之路任重道远,大家一起加油吧~
C++ 设计模式学习笔记大纲
"对象性能" 模式
面向对象很好的解决了 "抽象" 问题,但是必不可免的要付出一定代价.对于通常情况来讲,面向对象的成本大都可以忽略不计,但某些情况,面向对象所带来的性能成本必须谨慎考虑.这类设计模式就是为了解决此问题.
singleton
在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能保证它们的逻辑正确性,以及良好的效率.
模式定义:保证一个类仅有一个实例,并提供一个该实例的全局访问点.
模式结构
flyweight
在软件系统采用纯粹对象方案的问题在于大量细粒度的对象会很快充斥在系统中,从而带来很高的运行时代价——主要指内存需求方面的代价.
模式定义:运用共享技术有效的支持大量细粒度的对象.
模式结构
"状态变化" 模式
在组件构建过程中,某些对象的状态经常面临变化,如何对这些变化进行有效的管理?同时又维持高层模块的稳定?该模式就是为了解决此类问题.
state
在软件构建过程中,某些对象的状态发生改变,其行为也会随之发生改变.
模式定义:允许一个对象在其内部状态改变时改变它的行为,从而使对象看起来似乎修改了其行为.
模式结构
memento
在软件构建过程中,某些对象的状态在转换过程中,可能由于某种需要,要求程序能够回溯到对象之前处于某个点时的状态.
模式定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样就可以将该对象回复到原先保存的状态.
模式结构
"数据结构" 模式
常常有一些组件在内部具有特定的数据结构,如果让客户程序依赖这些特定的数据结构,会破坏组件的复用.
composite
模式定义:将对象组合成树形结构以表示 "部分 - 整体" 的层次结构,使得用户对单个对象和组合对象的使用具有一致性(稳定).
模式结构
iterator
模式定义:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露(稳定)该对象的内部表示.
模式结构
chain of resposibility
模式定义:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止.
模式结构
"行为变化" 模式
在组件的构建过程中,组件行为的变化经常导致组件本身剧烈的变化.该模型将组件的行为和组件本身解耦,从而支持组件行为的变化,实现两者间的松耦合.
command
模式定义:将一个请求(行为)封装成一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作.
模式结构
visitor
模式定义:表示一个作用于某对象结构中的各元素的操作,使得可以在不改变(稳定)各元素的类的前提下定义(扩展)作用于这些元素的新操作(变化).
模式结构
"领域规则" 模式
在特定领域中,某些变化虽然频繁,但可以抽象为某个规则.这时候,结合特定领域,将问题抽象为语法规则,从而给出在该领域下的一般性解决方案.
interpreter
模式定义:给定一个语言,定义它的文法的一种表示,并定义一种解释器,这个解释器使用该表示来解释语言中的句子.
模式结构
设计模式总结
对象模型
所有模式都归属为第三种模型结构.继承转组合,是指使用第三种模型,组合的是 B 的指针.
经验谈:
不要为模式而模式;
关注抽象类 & 接口;
理清变化点 & 稳定点;
审视依赖关系;
要有 Framework 和 Application 的区隔思维;
良好的设计是演化的结果.
来源: http://www.jianshu.com/p/b16f9d5bbc01