Java设计模式之构造者模式

一、概述 

      构造者模式(Builder Pattern):构造者模式将一个复杂对象的构造过程和它的表现层分离开来,使得同样的构建过程可以创建不同的表示,又称为生成器模式。

    在软件系统 中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变 化,但是将它们组合在一起的算法确相对稳定。如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统中的“稳定 构建算法”不随着需求改变而改变?
      如果我们使用了构造者模式,那么用户就只需要指定需要构造的类型就可以得到它们,而具体的构造过程和细节就不需要知道了。

 

二、类图和图解



三、构造者模式解析
    Builder:是为创建一个Product对象的各个部件指定的抽象接口
    ConcreteBuilder:它是具体的构建者,实现Builder接口,构造和装配各个部件。
    Product:具体的产品
    Director:指挥者,它是构建一个使用Builder接口的对象。

四、实例代码
//产品类:
package com.javapatterns.builder;

public class Product{
    public Product(){
       // System.out.println("product is initing.");
    }
}
 
 //抽象建造方法:
package com.javapatterns.builder;

abstract public class Builder{
    public abstract void buildPart1();

    public abstract void buildPart2();

    public abstract Product retrieveResult();
}
 
//具体的建造类:产品的零件制造
package com.javapatterns.builder;

public class ConcreteBuilder extends Builder{

    private Product product = new Product() ;
    public void buildPart1(){
        System.out.println("build part one.");
    }

    public void buildPart2(){
        System.out.println("build part two.");
    }

    public Product retrieveResult(){
        return product;
    }
}
 
//产品的建造过程:
package com.javapatterns.builder;

public class Director{
    private Builder builder;

    public Director(Builder builder){
        this.builder = builder;
    }

   public void construct(){
        builder = new ConcreteBuilder();

        builder.buildPart1();

        builder.buildPart2();

        builder.retrieveResult();

        //continue with other code
    }
}
 
//测试:
package com.javapatterns.builder;

public class Client{

    private static Director director;

    private static Builder builder = new ConcreteBuilder();
       
    public void requestBuild(){
       // director = new Director(builder);
    }
   
     public static void main(String[] args) {
        director = new Director(builder);
        director.construct();
    }

}
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值