前记:本周进入设计模式最后一周,讲解了“对象性能”模式:Singleton单件模式和Flyweight享元模式;“状态变化”模式:State状态模式和Memento备忘录;“数据结构”模式:composite组合模式,iterator迭代器,Chain of Resposibility职责链;“行为变化”模式:Command命令模式,Visitor访问器;“领域规则”模式:Interpreter解析器。老师还对设计模式的核心思想做了总结。
“对象性能”模式
为了维护、提高性能,减少“抽象”带来的代价而使用的设计模式。
Singleton单件模式
提供一种机制来保证一个类只有一个实例,全局访问的都是这个实例。
为了保证只有一个实例,即别人不能创建,首先考虑的两点:
1,将构造函数、copy构造函数设置为私有。
2,建立静态成员变量为该唯一实例,静态函数为访问点。
在考虑单件模式时,还应该考虑双检查锁和reorder。
Flyweight享元模式
运用共享技术有效地支持大量细粒度的对象。Flyweight对象可以被共享,同过对标识值key的检索,检测到已创建key值后,返回已创建对象;检测未被创建过,则创建新对象。
“状态变化”模式
为管理状态经常变化的对象,并稳定高层模块的设计模式。
State状态模式
可以让一个对象在内部状态改变时改变它的行为。类似策略模式,使用多态在不同状态下达成不同的行为模式。
Memento备忘录
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以后可以将对象回复到原先保存的状态。
“数据结构”模式
封装特定的数据结构,在外部提供一致的接口,实现、接口分离的模式。
composite组合模式
将对象组合成树形结构以表示“整体-部分”的层次结构。整体在内部可以细分成各个部分,在外部具有和单个对象的一致性。
iterator迭代器
提供一种方法顺序访问一个聚合对象中的各个元素,而不暴露对象内部表示。
Chain of Resposibility职责链
将多个对象练成一条链,将请求沿着这条链传递,直到有一个对象处理。这样多个对象都可以访问且良好的跟踪。
“行为变化”模式
将组件行为和组件本身解耦,从而适应行为的变化。
Command命令模式
将“请求”封装成对象,对象可以对不同的请求进行不同的处理。
Visitor访问器
封装作用于对象结构各个元素的操作,在改变对象结构的情况下可以定义新的操作。
“领域规则”模式
Interpreter解析器
在特定领域中,某些变化虽然频繁,但是有一定的规律。解析器可以封装这些规律的变化操作,只要符合规则的操作都可以使用此解析器解释,从而达到简化程序设计的目的。