【面向对象】——设计模式之创建型模式

来源:互联网 发布:二手mac pro工作站 编辑:程序博客网 时间:2024/05/19 10:41


创建型模式:创建型模式抽象了实例化的过程。它们帮助一个系统独立于如何创建、组合和表示它的那些对象。创建型模式都会讲关于该系统使用哪些具体的类的信息封装起来。允许客户用结构和功能差别很大的“产品”对象配置一个系统。配置可以是静态的,即在编译时指定,也可以是动态的,就是运行时再指定。

创建型模式包括:工厂方法,抽象工厂,建造者,原型,单例。

工厂方法:

定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。


工厂方法模式,完全符合了开放-封闭原则。较简单工厂而言,工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现运算类,选择判断的问题还是存在的,也就是说,工厂方法把简单工厂的内部逻辑判断移到了客户端代码来进行。当想要加功能时,本来改工厂类,现在只需改客户端。更加符合了开放-封闭原则。


抽象工厂:

提供一个创建一系列或相关依赖对象的接口,而无需指定它们具体的类。


这个例子是解决不能换数据库问题的。当换数据库时,用代码直接切换数据库工厂即可,而不需更改大量代码。很好的实现了开放-封闭原来,和依赖倒转原则。

抽象工厂模式便于交换产品系列,由于具体工厂类,在一个应用中只需要在初始化的时候出现一次,这就使得改变一个应用的具体工厂变得非常容易,它只需要改变具体工厂即可使用不同的产品配置。另,它让具体的创建实例过程与客户端分离,客户端是通过他们的抽象接口操纵实例,产品的具体类名也被具体工厂的实现分离,不会出现在客户代码中。


单例模式:

保证一个类仅有一个实例,并提供一个访问它的全局访问点。


通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。


原型模式:

用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。


原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需知道任何创建的细节。其实,原型模式就相当于克隆,建一个实现模型的接口,便可克隆对象了。并且建立相应数目的原型并克隆它们通常比每次用合适的状态手工实例化该类方便很多。


建造者:

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。


建造者模式,主要用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。符合了合成/聚合复用原则。

如果你需要将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示的时候,我们就需要创建者模式,将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。如果用了建造者模式,那么用户就只需要指定需要的建造的类型就可以得到他们,而具体建造的过程和细节就不需要了。


总:通常设计是从工厂方法开始,当设计者发现需要更大的灵活性时,设计便会向其他创建型模式演化,当设计者在设计标准间进行权衡的时候,了解多个创建型模式可以给设计者更多的选择余地。

1 0