[读书笔记] 设计模式学习笔记
2013-10-12 09:33
218 查看
设计模式成书较早,所以很多想法是从原始的代码水平出发的,会出现很多显而易见的结论却被看起来很弱智的写成一个模式。
设计模式一直用来跟继承做比较,所以说明设计模式的时候一定要相比于继承。否则看不出优势。
命令模式:适用于 工具项目
装饰模式:只能用于增强方法不适用于扩展类,没法用于 mysqldao,实际的例子 sitemesh
策略模式:常常跟工厂模式混用,因为不同的算法总是从工厂模式来的
适配器模式:用来对接不同系统,对接新旧系统的时候很有用
责任链模式:struts的拦截器,用aop也可以实现
外观模式/门面模式:就像苹果的理念一样,已经有多个模块,整合在一起变成新的类
迭代器模式:就是 iterator,场景很特定
中介者模式:类似总线的设计,可以统一接口
工厂方法:太明了了,不说
抽象工厂:比工厂模式更深一层,这回连工厂的实现类都不知道了,说是不同的人可以拿到不同的工厂类(感觉很少会用到)
生成器模式(Builder):适合做框架,把几个条件分别输入后,调用一下build方法就出来
原型模式(prototype):将一个类新建出来后clone他,所以重点在于复制动作,所以 prototype接口基本都有clone方法,没有clone就不是原型模式
单例模式:显而易见,不提
组合模式:Ext 大量使用 组合模式,组合模式适用于做界面 swing ext 之类的框架
桥接模式:将同一件事情(流程)的各个部分开放成可以设置的接口组件,在使用的时候动态组合(但是又不是组合模式)
状态模式:让一个类可以切换模式,J5Service中设定为启动和暂停就是状态模式
模板方法模式(Template Method Pattern):跟桥接非常类似,不同点在于模板方法侧重的是静(页面或者一个稳定的实体),而桥接侧重的是动(一个流程),可以说桥接模式就是动得模板方法模式。模板方法模式也用于实现钩子方法,钩子就是在特定的地方放一个抽象接口实现,用具体的钩子类去实现。
代理模式:访问一个类却通过另外一个类,基本是用反射实现,适合做框架的时候,拦截,比如aop之类的。或者做客户端,负责处理掉中间的网络传输和相应文本的简单处理
享元模式(Flyweight):翻译者应该是想说 共享元素吧。共同的元素在构造函数里面可以直接声明一个对象,减少传参的数量。优点说是节省内存的开销,但是在java这种重视结构超过效率的语言下好像没啥用处
访问者模式(Visitor):适合做采集器,对采集下来的不同网站的网页进行处理和分析。
备忘录模式(Memento):记录下程序在某个时刻的状态,并在以后的某个时间恢复到现在这个状态。用于游戏的保存和读取,或者是任务的暂停和恢复。主要实现是 save() 和 restore(Memento memo) 。 要跟数据库结合。可以用来实现 undo 操作
解释器模式(Interpreter):适合做框架的时候,定义一套指令集语法,用户输入之后翻译。 实现接口方法为 parse(context) 和 execute。在java语言中使用较少。
设计模式一直用来跟继承做比较,所以说明设计模式的时候一定要相比于继承。否则看不出优势。
命令模式:适用于 工具项目
装饰模式:只能用于增强方法不适用于扩展类,没法用于 mysqldao,实际的例子 sitemesh
策略模式:常常跟工厂模式混用,因为不同的算法总是从工厂模式来的
适配器模式:用来对接不同系统,对接新旧系统的时候很有用
责任链模式:struts的拦截器,用aop也可以实现
外观模式/门面模式:就像苹果的理念一样,已经有多个模块,整合在一起变成新的类
迭代器模式:就是 iterator,场景很特定
中介者模式:类似总线的设计,可以统一接口
工厂方法:太明了了,不说
抽象工厂:比工厂模式更深一层,这回连工厂的实现类都不知道了,说是不同的人可以拿到不同的工厂类(感觉很少会用到)
生成器模式(Builder):适合做框架,把几个条件分别输入后,调用一下build方法就出来
原型模式(prototype):将一个类新建出来后clone他,所以重点在于复制动作,所以 prototype接口基本都有clone方法,没有clone就不是原型模式
单例模式:显而易见,不提
组合模式:Ext 大量使用 组合模式,组合模式适用于做界面 swing ext 之类的框架
桥接模式:将同一件事情(流程)的各个部分开放成可以设置的接口组件,在使用的时候动态组合(但是又不是组合模式)
状态模式:让一个类可以切换模式,J5Service中设定为启动和暂停就是状态模式
模板方法模式(Template Method Pattern):跟桥接非常类似,不同点在于模板方法侧重的是静(页面或者一个稳定的实体),而桥接侧重的是动(一个流程),可以说桥接模式就是动得模板方法模式。模板方法模式也用于实现钩子方法,钩子就是在特定的地方放一个抽象接口实现,用具体的钩子类去实现。
代理模式:访问一个类却通过另外一个类,基本是用反射实现,适合做框架的时候,拦截,比如aop之类的。或者做客户端,负责处理掉中间的网络传输和相应文本的简单处理
享元模式(Flyweight):翻译者应该是想说 共享元素吧。共同的元素在构造函数里面可以直接声明一个对象,减少传参的数量。优点说是节省内存的开销,但是在java这种重视结构超过效率的语言下好像没啥用处
访问者模式(Visitor):适合做采集器,对采集下来的不同网站的网页进行处理和分析。
备忘录模式(Memento):记录下程序在某个时刻的状态,并在以后的某个时间恢复到现在这个状态。用于游戏的保存和读取,或者是任务的暂停和恢复。主要实现是 save() 和 restore(Memento memo) 。 要跟数据库结合。可以用来实现 undo 操作
解释器模式(Interpreter):适合做框架的时候,定义一套指令集语法,用户输入之后翻译。 实现接口方法为 parse(context) 和 execute。在java语言中使用较少。
相关文章推荐
- [读书笔记]Servlet学习笔记-设计模式
- Golang 设计模式 学习笔记(七)适配器模式
- (Head First 设计模式)学习笔记(1)
- 黑马程序员——Java学习笔记之12——已接触的“设计模式”总结
- 设计模式【学习笔记】
- PHP设计模式——适配器模式(研磨设计模式学习笔记)
- 设计模式学习笔记--代理模式
- 设计模式学习笔记——抽象工厂(Abstract Factory)模式
- Android设计模式学习笔记(原型模式)
- 设计模式学习笔记1 - Adapter(适配器模式)
- 小杭的学习设计模式笔记
- 设计模式学习笔记(十三)—Iterator迭代器模式
- 设计模式学习笔记二十四:优雅的菜单 - 组合模式
- 设计模式学习笔记(一)--Facade外观模式
- 设计模式学习笔记--享元模式
- 设计模式学习笔记--状态(State)模式
- 设计模式学习笔记之工厂模式
- 学习设计模式笔记--策略模式
- 设计模式学习笔记(三:装饰模式)
- 设计模式学习笔记——单例模式