您的位置:首页 > 其它

建造者(生成器)模式-更新中

2015-12-30 18:20 141 查看

概述

建造者模式也叫生成器模式,23种设计模式之一,属于创建类模式。

问题的提出

在类的应用中,有些类是容易创建对象的,直接调用构造函数即可。

例如:

Student student = new Student(“10001”,”张三”,20);

表明学号10001,姓名为张三 ,年龄20的学生。

Circle c = new Circle(10.0f);

表明实例化一个半径是10的圆对象。

这两个类的一大特点是成员变量是基本数据类型或者其封装类,或者是字符串类。

但是有些类是不容易直接创建对象的,成员变量是自定义类型,如下所示:

[code]public  class Product{

    Unit1 u1 ;
    Unit2 u2 ;
    Unit3 u3 ;
    ..........

}


可以看出Product是有Unit1 Unit2 Unit3三个单元组成,实例化Product对象不能简单的由Product p = new Product(Unit1,Unit2,Unit3)获得,必须先产生具体的对象U1 U2 U3,然后才能获得Product对象。

简单的实现方法如下:

[code]public class Product {
    Unit1 u1 ;
    Unit2 u2 ;
    Unit3 u3 ;

    public void createU1(){// 创建U1
        .......
    }
    public void createU2(){// 创建U2
        .......
    }
    public void createU3(){// 创建U3
        .......
    }
    public void composite(){ //以某种形式组合U1U2U3成Product
        // U1 +U2 +u3
    } 

    public static void main(String[] args){
        Product product = new Product();
        product.createU1();
        product.createU2();
        product.create3();
        product.composite();
    }
}


运行完main方法,执行完composite方法后,Product实例化完成。

乍一看,本方法结局了复杂对象的创建问题,层次清晰,但是知悉考虑一下,本方法仅是解决了一类Product对象的创建问题,如果有两类Product,甚至更多呢?

可以想到的是,随着Product产品总数的增多或者减少,必须要修改原已有的源代码,这不是我们希望看到的情况,如何解决呢? 生成器模式(建造者模式)就是解决这类问题的重要手段。

生成器模式

生成器模式也成为建造者模式。

生成器模式的意图在于将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。

在软件设计中,有时候会面临一个非常复杂的对象的创建工作,这个复杂的对象通常可以分成几个较小的部分,由各个子对象组合出这个复杂对象的过程相对来说比较稳定,但是子对象的创建过程各不相同而且可能面临变化。根据OOD(面向对象设计Object-Oriented Design)中的OCP(开闭原则Open-Close Principle)原则,应该对这些子对象的创建过程进行变化封装。

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