23种设计模式(三)
来源:互联网 发布:php是什么软件 编辑:程序博客网 时间:2024/05/16 08:29
设计模式(Java版)
说明:本资源是本人学习需要,通过网上查询,摘取网上有关设计模式好的解释,再由个人整理而得,绝对详解,看代码时最好结合word文档的图解一起,学习使用
源码和文档下载:http://download.csdn.net/detail/u010651186/7736041
设计模式分为三大类:
创建型,共五种:单例模式、静态工厂模式(普通工厂)、抽象工厂模式、建造者模式、原型模式。
结构型,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型,共十一种:策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
行为型:
13.策略模式(strategy)
(定义一组算法,并把其封装到一个对象中。然后在运行时,可以灵活的使用其中的一个算法)
适用:
1.多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为。
2.需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其它方式来实现。
3.对客户隐藏具体策略(算法)的实现细节,彼此完全独立
14.模板方法(template method)
(把具有特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承对抽象方法的不同实现改变整个算法的行为)
适用:
1. 具有统一的操作步骤或操作过程
2. 具有不同的操作细节
3. 存在多个具有同样操作步骤 的应用场景,但某些具体的操作细节各不相同
15.观察者模式(observer)
(当一个对象变化时,其它依赖该对象的对象都会收到通知,并且随着变化!对象之间是一种一对多的关系)
适用:
1.当一个对象有两个方面,其中一个方面依赖于另一个方面。将二者封装在独立的对象中以使他们可以各自独立的改变和复用。
2.当一个对象的改变需要同时改变其他对象,而不知道具体有多少对象有待改变。
3.当一个对象必须通知其他对象,而又不能假定其他对象是谁。
16. 迭代器模式(iterator)
(提供一种一致的方法来顺序遍历一个容器中的所有元素)
适用:
1.访问一个聚合对象的内容而无需暴露它的内部表示。
2.支持对聚合对象的多种遍历。
3.为遍历不同的聚合结构提供一个统一的接口(即,多态迭代)。
17.责任链模式(chain of responsibility)
(使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链;并沿着这条链传递该请求,直到有一个对象处理它为止。在这个链上的所有的对象有相同的接口(抽象类)但却有不同的实现)
优点:
在隐瞒客户端的情况下,对系统进行动态的调整
适用:
1.有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。
2.你想在不明确指定接受者的情况下,向多个对象中的一个提交请求。
3.处理一个请求的对象集合应被动态指定。
18.命令模式(command)
(将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的动作)
优点:
1、命令模式将发出请求的对象和执行请求的对象解耦
2、在被解耦的两者之间是通过命令对象进行沟通的。命令对象封装了接收者和一个或一组动作
3、调用者通过调用命令对象的execute()发出请求,这会使得接收者的动作被调用
适用:
抽象出待执行的动作以参数化某对象;在不同的时刻指定、排列和执行请求;支持取消操作;支持修改日志
下接:23种设计模式(四)
- 23种设计模式(三)
- 设计模式--23种模式精华(三)
- 设计模式(三)23种设计模式
- java 23种设计模式(三)
- 三大类,共23种设计模式
- 23种设计模式(三)
- 23种设计模式三:创建型抽象工厂模式
- 面试三种设计模式
- java设计模式---三种工厂模式
- 设计模式之三种工厂模式
- 设计模式之三种工厂模式
- 设计模式之三种工厂模式
- 设计模式之---三种工厂模式
- 设计模式三种工厂模式
- 设计模式---三种工厂模式
- java设计模式之三句话记住23种设计模式(4)
- Java23种设计模式:Iterator设计模式(三)
- 追MM与23种设计模式(三) .
- 浅谈USB的安全性
- 对话框的交互——你好,对话框
- ZOJ-1258
- 栈和队列
- 19-拍照与视频刻录
- 23种设计模式(三)
- Dom编程(表格排序)
- POJ 2502 Subway
- ZOJ - 1709 Oil Deposits
- 图的邻接表存储结构
- CF 455B(A Lot of Games-树上博弈)
- 21-手势识别
- java String类方法replace分析
- 图形化界面总结