设计模式学习总结
双刃剑 qq:409746848
创建型
1.工厂模式
一个固定工厂创建一种固定的对象,螺丝钉工厂只生产螺丝钉。
2.抽象工厂模式
一类工厂可以创建多种对象,将工厂抽象成这一类工厂,工厂A生产螺丝帽和螺丝钉,工厂B也可以生产。
3.构建器模式
构建一个成品,不用关心怎么造的,产品A=P1+P2+P3,构建器只用管产生产品A的接口,内部自己调用P1,P2,P3。
4.协议器模式
实现自身自我复制。
5.单例模式
全局唯一,就是垄断。
结构型
6.桥接模式
通过一个桥梁干一件事情,由桥梁去安排其他人干,A a = new A; THING t = new Brige(a);t->dosomething();
7.适配器模式
把一个对象适配成另一个对象,因为不同个叫法其实是一个事情,就需要适配器告诉他你其实也是干这个事情的。
8.装饰器模式(Decorator pattern)
就是组合模式完成一系列事情,就像一面墙的装潢需要窗子,砖头水泥,钢筋,分别调用自己的方法组成一面墙,而去组合的这个人就是装潢工(装饰器)。
9.容器组合模式(Composite pattern)
这个和装饰器模式一样都是组合,这个重在将对象组合起来,需要谁把谁叫出来,就像是人力资源公司,把人都组合到一起,需要c++就把c++的人员派出去,需要其他的就把其他的派出去。
10.享元模式(Flyweight pattern)
对象池中存放复杂的内部对象(有很多属性),获取出外部对象用完就释放,减少内存占用,重点在对象的存储上使用,减少内存的占用,将内存部分共享出来。
11.外观模式,门面模式(facede pattern)
接口模式,不管这个事情是谁去做,我只关心这个事情的结果就行,就像是老板需要一个工作的结果,CTO你自己去安排吧。
12.代理模式(Proxy )
也叫钩子模式,就是一个事情外包给其他的人去做。只要抽象出会干这个是就行。
行为型
13.模板模式(Template pattern)
重点在会做这个事情的一类人,这类人就是模板。需要做这个事情的使用就用使用会这个模板子类的方法的人去干。
14.策略模式(strategy pattern)
组合对象去实现算法,每条策略对应一个对象,由组合对象去实现具体的策略算法。
15.状态机模式(State pattern)
将每种状态封装成一个对象,上下文保留状态基类,调用其处理方法即可调用自己的状态算法。
16.观察者模式(Observer pattern)
观察者负责观察状态并通知另一个对象做相应的操作,具体参考MVC。
17.备忘录模式(Memento pattern)
内中存在一个对象的备份,方便还原,撤销的操作就是备忘录模式。
18.中介模式(Mediator pattern)
中间人负责调用a的方法和b的方法,ab本身不知道对方的存在和装饰器模式很相似,但是他不必定义组合的关系,装饰器模式重点在于需要调用组合对象的方法生成一个完整体的结构。中介模式重点在于行为调用就行。
19.指令模式(command pattern)
将指令和指令的实现算法封装成一个对象,实现指令解耦,一般都会和容器组合模式一起使用。
20.访问者模式(Vistor pattern)
一个对象支持不停的新对象的操作,比如需求不停的新增和变化,就可以将新增变化的需求做成一个观察者,一个新的观察者表示一个需求有了新的改变和修饰。
21.责任链模式(Chain of Responsibility)
将待处理目标条件和处理封装成处理对象,当目条件相同时,就出发其处理方法。参考windows 窗口消息,消息注册在哪个窗口就由哪个窗口去处理。
22.迭代器模式(iterator)
参考stl,就是遍历获取对象的方法进行封装成对象,每次遍历获取迭代器,重载其递增操作。
23.解释模式(Interpreter pattern)
对数据进行表达式解释封装成对象,比如编译器,内建脚本解释器。将一类表达式解析成对象。