5.建造者模式

1.概述

建造者模式属于对象的创建模式。可以将一个产品的内部表象(属性)与产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。

在大部分情况下都可以使用new关键字或者工厂模式来创建对象,但是有些对象却比较复杂,比如某景区的旅游套票分为:普通成年人、退休老人、半价儿童、军人及家属等,他们有不同的优惠规定。如果通过new或工厂模式来创建对象,参数太多、对象复杂,会造成不便。构建套票所需数据很复杂,导致套票对象的构建难以进行。

为了处理这个问题,Builder模式出现了。Builder模式是一种分步构建对象的模式。以旅游套票为例,分布完成流程如下:

  1. 构建普通成年人票。
  2. 构建退休老人票。
  3. 构建半价儿童票。
  4. 构建军人及其家属票。

用一个配置类对这些步骤统筹,然后将所有信息交给构建器来完成对象的构建。如下图所示。

builder java 默认值 java builder模式_建造者模式

显然这里的构建不再复杂,我们只是由配置类一次性构建一种票,步步推进,当所有票都已经构建结束,通过构建起来构建套票对象。

2.Builder模式实例

我们来简单模拟一个Builder模式。先创建一个配置类,TicketHelper类,用它来一步步完成构建对象。

public class TicketHelper {
    public void buildAdult(String info){
        System.out.println("构建成年人票逻辑:"+info);
    }
    public void buildElderly(String info){
        System.out.println("构建退休老人票逻辑:"+info);
    }
    public void buildChild(String info){
        System.out.println("构建半价儿童票逻辑:"+info);
    }
    public void buildSolder(String info){
        System.out.println("构建军人及家属票逻辑:"+info);
    }
}

用println语句代替相应的处理逻辑。然后创建一个套票的构建类。它只有一个配置类的参数,通过它可以得到所有套票的信息,从而构建套票对象。

public class TicketBulider {
    public static Object builder(TicketHelper helper){
        System.out.println("通过TicketHelper构建套票信息");
        return null;
    }
}

有上面两个类,就可以进行测试了,用如下代码完成套票对象的构建。

public void test(){
        TicketHelper helper=new TicketHelper();
        helper.buildAdult("成人票");
        helper.buildChild("半价儿童票");
        helper.buildElderly("退休老人票");
        helper.buildSolder("军人及家属票");
        Object ticket=TicketBulider.builder(helper);
    }

这就是Buildder模式的使用。把建造(构建)分为若干步,通过一步步构建信息,把一个复杂的对象构建出来。

运行结果如下。

builder java 默认值 java builder模式_建造者模式_02