创建型模式
在软件工程中,创建型模式是处理对象创建机制的设计模式,视图以适合情况的方式来创建对象。对象的创建基本形式可能会导致设计问题或增加设计的复杂性。创建型的设计模式通过控制这个对象创建来解决这个人体。
创建型设计模式有两个主导思想组成。一个是封装有关系统使用哪些具体类的知识。另一个是隐藏这些具体类的实例是如何创建和组合的。
创建型设计模式进一步分为对象创建模式和类创建模式,其中对象创建模式处理对象创建和类创建模式处理类实例化。更详细地说,对象创建模式将其对象创建的一部分推迟到另一个对象,而类创建模式将其对象创建推迟到子类。
创建型模式有五种:
抽象工厂模式(Abstract factory
pattern): 提供一个接口, 用于创建相关或依赖对象的家族, 而不需要指定具体类。
建造模式(Builder pattern): 使用建造模式封装一个产品的构造过程, 并允许按步骤构造. 将一个复杂对象的构建与它的表示分离, 使得同样的构建过程可以创建不同的表示。
工厂模式有两种:
- 简单工厂模式(Simple factory pattern):是类的创建模式,又叫做静态工厂方法(Static Factory
Method)模式。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。 - 工厂方法模式(factory method pattern): 定义了一个创建对象的接口, 但由子类决定要实例化的类是哪一个.
工厂方法让类把实例化推迟到子类.
原型模式(prototype pattern): 通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。
单例模式(Singletonpattern):确保一个类只有一个实例,并提供全局访问点,这个类也被称为单例类。
结构型模式
结构型模式主要是用于处理类或者对象的组合,它描述了如何让类或者对象更好的组合起来,适从程序的结构上来解决模块之间的耦合问题。
结构型模式有七种:
适配器模式(Adapter pattern): 将一个类的接口, 转换成客户期望的另一个接口. 适配器让原本接口不兼容的类可以合作无间.
对象适配器使用组合, 类适配器使用多重继承.桥梁模式(Bridge pattern): 使用桥梁模式通过将实现和抽象放在两个不同的类层次中而使它们可以独立改变。
装饰者模式(decorator pattern): 动态地将责任附加到对象上, 若要扩展功能, 装饰者提供了比继承更有弹性的替代方案。
外观模式(facade pattern): 提供了一个统一的接口, 用来访问子系统中的一群接口. 外观定义了一个高层接口,让子系统更容易使用。
亨元模式(Flyweight Pattern): 如想让某个类的一个实例能用来提供许多”虚拟实例”, 就使用蝇量模式。
代理模式(Proxy pattern): 为另一个对象提供一个替身或占位符以控制对这个对象的访问。
行为型模式
行为型模式主要是用于描述类或者对象是怎么交互和分配职责的。它涉及到算法和对象键的职责分配,不仅是描述对象或者类的模式,还描述了他们之间的通信
方式,它将你的注意力从控制流转移到了对象间的关系上来。行为型类模式采用继承机制在类间分派行为,而行为型对象模式使用对象复合而不是继承。
行为型模式有11种:
责任链模式(Chain of responsibility
pattern):通过责任链模式,你可以为某个请求创建一个对象链.每个对象依序检查此请求并对其进行处理或者将它传给链中的下一个对象。解释器模式(Interpreter pattern): 解释器模式是行为型的模式,比较少用。使用解释器模式简单来说就是为语言创建解释器。
迭代器模式(Iterator pattern): 提供一种方法顺序访问一个聚合对象中的各个元素, 而又不暴露其内部的表示。
中介者模式(Mediator pattern) :使用中介者模式来集中相关对象之间复杂的沟通和控制方式,使得这些对象不必相互明显引用。从而使它们可以较松散地耦合。当这些对象中的某些对象之间的相互作用发生改变时,不会立即影响到其他的一些对象之间的相互作用。从而保证这些相互作用可以彼此独立地变化。
备忘录模式(Memento pattern): 当你需要让对象返回之前的状态时(例如, 你的用户请求”撤销”), 你使用备忘录模式。
观察者模式(observer pattern):在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象都会收到通知,并自动更新。
状态模式(State pattern): 允许对象在内部状态改变时改变它的行为, 对象看起来好象改了它的类。
策略模式(strategy pattern):定义了算法族,分别封闭起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
模板方法模式(Template pattern):在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
访问者模式(visitor pattern): 当你想要为一个对象的组合增加新的能力, 且封装并不重要时, 就使用访问者模式。
参考资料:《JAVA与模式》26天系列