几句话总结常用的设计模式
2016-03-30 13:58
246 查看
前段时间重点学习了一下常用的设计模式,这里总结下,适合有一定设计模式基础的人看,作为复习。以后遇到差不多需求再回来查,来敲定用哪种设计模式。没有学过设计模式的看着可能有些抽象。
创建型模式
单例模式:
类里面有一个本类的静态属性变量,一个静态方法,用于返回这个静态属性变量。
工厂方法模式:
每个继承类分支对应一个工厂分支
抽象工厂模式:
一个工厂分类对应多个类继承分支,可以生产多个类的对象。
建造者模式:
建造步骤相同,实现不同,建造者挑几个建造步骤建造。
原型模式:
其实就是在类里面设一个返回自身指针的函数,进行浅复制。
结构型模式
适配器模式:
适配器继承原类,依赖要适配的类。
装饰模式:
一层套一层。
桥接模式:
面向接口编程,易扩充。
组合模式:
叶子节点和分支节点。
享元模式:
通过字典重复利用new出来的对象。
代理模式:
把本该本类处理的逻辑交给他的代理处理。
外观模式:
把同时调用多个对象的方法封装到一个类的某个方法里,通过调一个类的方法,实现多对象方法的调用。
行为型模式:
观察者模式:观察者对象内保留被观察者对象的指针数组,通知时调用被观察对象的相应方法。
模板方法模式:
父类中定义函数的执行顺序,子类去实现这些函数。
命令模式:
在发令者和接受者之间加入命令类。发令者调用命令类的执行方法。命令类的执行方法调用接收者的执行方法。
状态模式:
状态类之间的转换有另一个类的一个方法来控制。哪种状态可以转换到那种状态是写死的。
职责链模式:
处理请求类里面保留着另一个处理请求类的指针。如果处理不了就直接交给另一个处理请求类。所有处理请求类继承于一个基类。
解释器模式:
遇到不同的的内容就用不用的类去处理(解释)。
中介者模式:
继承于同一个类的子类,通过调用中介者类的方法来相互调用各自的方法。
访问者模式:
某些类的子类是不易变动的,例如人类下的男人和女人类。定义一个操作类,子类是对上述类的各种操作。人类调用操作类,定义一个操作类,然后把自己传进去。从而实现了某些类与对其操作的分离。
策略模式:
所有的策略类继承于一个策略基类。再设定那个一个外部类。用于接收策略基类的指针。外部类设定一个函数用于访问策略类的固定的某个函数。使用时程序只需在初始化外部类时指定相应的测试子类。然后统一调用外部类的固定函数即可。
备忘录模式:
管理者类里有备忘录类里的对象。被管理类的对象有一个函数可以返回备忘录对象,主程序去除这对象放在管理者类的备忘录类的对象里,实现状态的保存。备忘录类里的字段可以根据要保存的状态动态设定。
迭代器模式:
设定一个数组的操作类,该类实现了迭代器接口(接口规定实现的方法有返回元素个数、第一个元素、下一个元素等)中的方法,从而更加方便的对数组进行操作。
创建型模式
单例模式:
类里面有一个本类的静态属性变量,一个静态方法,用于返回这个静态属性变量。
工厂方法模式:
每个继承类分支对应一个工厂分支
抽象工厂模式:
一个工厂分类对应多个类继承分支,可以生产多个类的对象。
建造者模式:
建造步骤相同,实现不同,建造者挑几个建造步骤建造。
原型模式:
其实就是在类里面设一个返回自身指针的函数,进行浅复制。
结构型模式
适配器模式:
适配器继承原类,依赖要适配的类。
装饰模式:
一层套一层。
桥接模式:
面向接口编程,易扩充。
组合模式:
叶子节点和分支节点。
享元模式:
通过字典重复利用new出来的对象。
代理模式:
把本该本类处理的逻辑交给他的代理处理。
外观模式:
把同时调用多个对象的方法封装到一个类的某个方法里,通过调一个类的方法,实现多对象方法的调用。
行为型模式:
观察者模式:观察者对象内保留被观察者对象的指针数组,通知时调用被观察对象的相应方法。
模板方法模式:
父类中定义函数的执行顺序,子类去实现这些函数。
命令模式:
在发令者和接受者之间加入命令类。发令者调用命令类的执行方法。命令类的执行方法调用接收者的执行方法。
状态模式:
状态类之间的转换有另一个类的一个方法来控制。哪种状态可以转换到那种状态是写死的。
职责链模式:
处理请求类里面保留着另一个处理请求类的指针。如果处理不了就直接交给另一个处理请求类。所有处理请求类继承于一个基类。
解释器模式:
遇到不同的的内容就用不用的类去处理(解释)。
中介者模式:
继承于同一个类的子类,通过调用中介者类的方法来相互调用各自的方法。
访问者模式:
某些类的子类是不易变动的,例如人类下的男人和女人类。定义一个操作类,子类是对上述类的各种操作。人类调用操作类,定义一个操作类,然后把自己传进去。从而实现了某些类与对其操作的分离。
策略模式:
所有的策略类继承于一个策略基类。再设定那个一个外部类。用于接收策略基类的指针。外部类设定一个函数用于访问策略类的固定的某个函数。使用时程序只需在初始化外部类时指定相应的测试子类。然后统一调用外部类的固定函数即可。
备忘录模式:
管理者类里有备忘录类里的对象。被管理类的对象有一个函数可以返回备忘录对象,主程序去除这对象放在管理者类的备忘录类的对象里,实现状态的保存。备忘录类里的字段可以根据要保存的状态动态设定。
迭代器模式:
设定一个数组的操作类,该类实现了迭代器接口(接口规定实现的方法有返回元素个数、第一个元素、下一个元素等)中的方法,从而更加方便的对数组进行操作。
相关文章推荐
- Echarts的使用
- windows环境phpstorm调试环境搭建
- iOS,面试必看,最全梳理
- eclipse插件地址
- synchronized 关键字的体验
- [POJ]1811Prime Test 做题笔记
- C++ 移动赋值运算符
- 多处@Override错误
- PHP语言中cookie的作用
- 查看maven项目的依赖关系 mvn dependency:tree
- php函数方法知识
- android批量上传图片(模仿QQ空间和微信发表说说)
- ORM与hibernate概述
- [BZOJ1588]营业额统计(平衡树splay)
- c++ 移动构造函数
- GearVR开发之系列问题一
- Linux主分区,扩展分区,逻辑分区的联系和区别
- [torch]parallel
- PHP基础整理1
- java读取单个文件名,main方法测试