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种设计模式(四)

0 0
原创粉丝点击