您的位置:首页 > 其它

23种设计模式总结

2012-11-28 08:19 267 查看
按照目的来分,设计模式可以分为创建型模式、结构型模式和行为型模式。

创建型模式用来处理对象的创建过程,创建型模式用来处理对象的创建过程,主要包含以下5种设计模式:

工厂方法模式(FactoryMethod Pattern):用一个抽象方法完成创建过程

抽象工厂模式(AbstractFactory Pattern):抽象工厂模式允许客户使用抽象接口来创建一组相关的产品,客户类和工厂类分开,客户需要任何产品的时候,只需要向工厂请求即可,客户无须修改就可以获得新产品。这样一来,客户就从具体产品中解耦

建造者模式(BuilderPattern):通过一个构造算法和builder接口把构造过程和客户分离开。

原型模式(PrototypePattern):通过原型来构造

单例模式(SingletonPattern):创建唯一对象模型

结构型模式用来处理类或者对象的组合;结构型模式用来处理类或者对象的组合,主要包含以下7种设计模式:

适配器模式(AdapterPattern):将一个类的接口转换成客户希望的另一个接口,使得原来由于接口不兼容而不能一起工作的那些类可以一起工作

桥接模式(BridgePattern):将抽象化与实现化脱耦,使得二者可以独立的变化,也就是说将他们之间的强关联变成弱关联,也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以独立的变化

组合模式(CompositePattern):将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得客户对单个对象和复合对象的使用具有一致性。

装饰者模式(DecoratorPattern):动态地给一个对象添加一些额外的职责。就扩展功能而言,Decorator模式比生成子类方式更加灵活

外观模式(FacadePattern):为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,使得这个子系统更加容易使用

享元模式(FlyweightPattern):运用共享技术有效的支持大量细粒度的对象

代理模式(ProxyPattern):为其他对象提供一个代理以控制对这个对象的访问

行为型模式用来对类或对象怎样交互和怎样分配职责进行描述,主要包含以下11种设计模式:

责任链模式(Chainof Responsibility Pattern):为解除请求的发送者和接收者之间的耦合,而使多个对象有机会处理这个请求。将这些请求连成一个链,并沿着这条链传递该请求,直到有个对象处理它

命令模式(CommandPattern):将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可以取消的操作。

解释器模式(InterpreterPattern):给定一个语言,定义它的文法的一种表示,并定义一个解释器用于解释特定文法。

迭代器模式(IteratorPattern):提供一种方法顺序访问一个聚合对象中的各种元素,而无需暴露该对象的内部表示。

中介者模式(MediatorPattern):用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式相互引用,从而使得耦合松散,可以独立改变相互之间的交互。

备忘录模式(MementoPattern)不破坏封装的前提下,捕获对象的内部状态,并在该对象之外保存这个状态。备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捉住,并外部化,存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。

观察者模式(ObserverPattern)定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生变化时依赖于它的所有的对象都得到通知和刷新。观察者模式定义了一种一队多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使他们能够自动更新自己。

状态模式(State Pattern):允许一个对象再内部状态改变的时候改变它的行为。对象看起来似乎修改了所属的类。状态模式允许一个对象在其内部状态改变的时候改变行为。这个对象看上去象是改变了它的类一样。状态模式把所研究的对象的行为包装在不同的状态对象里,每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。状态模式需要对每一个系统可能取得的状态创立一个状态类的子类。当系统的状态变化时,系统便改变所选的子类。

策略模式(StrategyPattern):定义一系列的算法,把他们封装起来,并可以相互替换,使算法独立于客户。策略模式针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。策略模式把行为和环境分开。环境类负责维持和查询行为类,各种算法在具体的策略类中提供。由于算法和环境独立开来,算法的增减,修改都不会影响到环境和客户端。

模板方法模式(TemplateMethod Pattern):定义一个操作中的算法骨架,而将这些算法的具体实现的代码延迟到子类中完成。模板方法模式准备一个抽象类,将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。先制定一个顶级逻辑框架,而将逻辑的细节留给具体的子类去实现。

访问者模式(VisitorPattern):标识一个作用于某对象结构中的各元素的操作,在不改变各元素的类的前提下定义作用于这个元素的新操作。访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构可以保持不变。访问者模式适用于数据结构相对未定的系统,它把数据结构和作用于结构上的操作之间的耦合解脱开,使得操作集合可以相对自由的演化。访问者模式使得增加新的操作变的很容易,就是增加一个新的访问者类。访问者模式将有关的行为集中到一个访问者对象中,而不是分散到一个个的节点类中。当使用访问者模式时,要将尽可能多的对象浏览逻辑放在访问者类中,而不是放到它的子类中。访问者模式可以跨过几个类的等级结构访问属于不同的等级结构的成员类。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: