服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

设计模式之创建模式


1          creational patterns

将对象的使用与对象的创建分开。对象的使用者不负责创建对象,只需知道如何获取需

要的对象。这样,当被使用对象的创建过程需要变更或扩展时,对象的使用者无须变动,只要对专门负责创建该对象的对象工厂做必要的变更或扩展即可。

1.1     the factory pattern

1.1.1    基本类图

设计模式之创建模式(图一)
点击查看大图

1.1.2    分析

当 basicproduct 有新的子产品 exproduct3 要应用到系统时, factory 的 createproduct()

需要简单修改,增加一个“ else if ”分支,没有完全实现“对扩展开放,对修改封闭”。但当明确产品就是有限的几种时,仍是有效且常用的。

      

1.2     the abstract factory pattern

1.2.1    基本类图

设计模式之创建模式(图二)
点击查看大图

1.2.2    分析

当 basicproduct 有新的子类 exproduct3 要应用到系统时,新建一个对应的扩展自

basicfactory 的 exfactory3 即可,现有类无需修改,实现了“对扩展开放,对修改封闭”。

1.3     the singleton pattern

控制系统最多存在某个类的一个实例。很容易将 singleton pattern 扩展为控制系统只能

创建某个类的有限个实例的情形。系统中大部分管理服务对象都是单实例的。例如,系统存在多个用户实例,但只存在一个用户管理者对象。

1.3.1    常用实现方式

public class singleton {

    private static singleton instance = null ;

   

    private singleton() {}; // 控制外部不能自行创建 sigleton 实例

   

    public static singleton getinstance() {

       if ( null == instance ) {

           instance = new singleton();

       }

       return instance ;

    }

}

 

1.4     the builder pattern

1.4.1    基本类图

设计模式之创建模式(图三)
点击查看大图

1.4.2    分析

当一个产品( product )由多个部分( part1 , part2 , … , partn )组成,而各个部分又有

不同的构造方式时。将产品各部分的构造和产品的组装分离,就是 builder pattern 。 builder 是对产品各部分构造的抽象,而 director 负责使用指定的 builder 组装产品。这样,当系统有新的产品各部分构造方式需要加入时,只需实现继承自 builder 的 concretebuilder3 即可,系统其他类无需修改,实现了“对扩展开放,对修改关闭”。

1.5     the prototype pattern

给定一个对象实例 a ,得到一个另一个对象实例 b : b 的类型与 a 同, b 的内容与 a

相同。常称 b 为 a 的克隆或副本。

       java 对象模型直接支持 prototype pattern ,因为 java 自带克隆机制。

扫描关注微信公众号