设计模式整理--设计模式总览
1、抽象工厂模式(abstract factory)提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。当需要产生产品对象家族时使用此模式。
2、工厂方法模式(factory method)定义一个用于创建对象的接口,让子类决定将哪一个类实例化,即将一个类的实例延迟到其子类。延迟子类的实例化。
3、创建者模式(builder)见一个负责对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。需要创建一个组合对象时使用。
4、原型模式(protype)用原型实例指定出阿健对象的种类并且通过拷贝这个原型来创建新的对象。被实例化的类需要变化时使用此模式。
5、单件模式(singleton)保证一个类只有一个实例,并提供一个访问它的全局访问点。一个对象全局唯一实例时。
6、适配器模式(adapter)将一个类的接口转换成客户希望的另外一个接口,使原来由于接口不兼容而不能一起工作的那些类可以一起工作。对象的接口可变时,即提高对象的交互能力。
7、桥接模式(bridge)将抽象部分与它的实现部分分离,使他们都可以独立的变化。对象的实现可变时。
8、组合模式(composite)将对象组合成树形结构以表示“部分-整体”的层次结构,使客户对单个对象和复合对象的使用具有抑制性。一个对象的结构组织为可变时。
9、装饰模式(decorator)动态地给一个对象添加一些额外的职责。从而获得比生成子类更灵活的扩展方方式。对象的职责可变,但不生成子类时。
10、门面模式(facade)为子系统中的一组接口提供一个一致的界面,其定义了一个高层接口,使得这一子系统更加容易使用。为子系统提供统一的接口时。
11、享元模式(flyweight)运用共享技术有效地特效支持大量的细粒度的对象。当考虑对象开销时。
12、代理模式(proxy)为其他对象提供一个代理以控制这个对象的访问。当考虑要间接或访问对象位置的时候,使用代理模式。
13、解释器模式(interpreter)给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器是用该表示来解释语言中的句子。一个语言的文法及解释为可变时。
14、模板方法模式(template method)定义一个操作的算法的骨架,而将一些步骤 延迟到子类中。使得子类可以改变一个算法的结构即可重定义改算法的某些特定步骤。算法中某些步骤可变时。
15、责任链模式(chain of responsebility)为解除请求的发送者和棘手者之间耦合,而是多个对象都有机会处理这个请求,将这些独享连成一条链,并沿着这条链传递改请求,直到有一个对象处理它。需为所有可能的请求提供一个响应。
16、命令模式(command)将一个请求封装为一个对象,从而使你可用不同请求对客户进行修改参数化,对请求排队或记录请求日志,以及支持可取消的操作。当考虑何时,怎样满足一个请求时。
17、矢带模式(iterator)提供一种发发顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。考虑到如何遍历,访问一个聚合的元素时使用。
18、中介者模式(mediator)用一个中介对象来封装一系列的对象交互,中介者使个对象不需要显式地相互引用,从而使其耦合松散,而考研独立地改变他们之间的交互。对象间不好直接交流或需要中间者交流时使用。
19、观察者模式(observer)定义对象间的一种一对多的依赖关系,一便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新状态。当多个对象一栏与另外一个对象,而这些对象又要保持一致时使用。
20、状态模式(state)允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它所属的类。当要保持对象状态,或对象状态可变时使用。
21、策略模式(strategy)定义一系列的算法,把太慢一个个封装起来,并且使它们可相互替换,本模式使得算法的可变变化可独立于使用它的客户。当需要定义一系列算法时。
22、访问者模式(visitor)表示一个作用于某对象结构中的各元素的操作,它使你可用在不改 变各元素的类的前提下定义作用域这些元素的新操作。某些可作用于一个(组)对象上的操作,但有不要修改这些类时。
23、备忘录模式(menento)在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到保存的状态。当一个对象中的的私有信息存放到对象向之外,且此信息可变,以及存储位置也可变时使用。