设计模式------构造者(Builder)模式

  Builder模式是一种广泛使用的设计模式。它的定义是:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

一.经典Builder模式

经典Builder模式主要四个参与者:

  •  抽象建造者(Builder):该角色用于规范产品的各个组成部分,并进行抽象,一般独立于应用程序的逻辑。
  • 具体建造者(Concrete Builder):该角色实现抽象建造者中定义的所有方法,并且返回一个组建好的产品实例。
  • 产品(Product):该角色是建造者中的复杂对象,一个系统中会有多于一个的产品类,这些产品类并不一定有共同的接口,完全可以是不相关联的。
  • 导演者(Director):该角色负责安排已有模块的顺序,然后告诉Builder开始建造。

下面以代码的形式进行简单说明:

Product类:

public class Product {
    private String partOne;
    private String partTwo;
    public String GetPartOne(){
        return partOne;
    }
    public void setPartOne(String partone){
        this.partOne=partone;
    }
    public String GetPartTwo(){
        return partTwo;
    }
    public void setPartTwo(String parttwo){
        this.partTwo=parttwo;
    }
}

Builder接口:

public interface Builder {
    //设置产品的不同部分,以获得不同的产品
    public void buildPartOne();
    public void buildPartTwo();
    //建造产品
    public Product getProduct();
}

ConcereteBulder类:

public class ConcereteBuilder implements Builder {
    private Product product;
    @Override
    public void buildPartOne() {
        //安装部件1
    }

    @Override
    public void buildPartTwo() {
        //安装部件2
    }
    //创建产品
    @Override
    public Product getProduct() {
        return product;
    }
}

Director()类:

public class Director {
    private Builder bulder;
    public Director(Builder bulder){
        this.bulder=bulder;
    }
    public void builderProduct(){
        this.bulder.buildPartOne();
        this.bulder.buildPartTwo();
    }
    public Product getProduct(){
        return this.bulder.getProduct();
    }
}
//此处的导演类起到了封装左右,可以避免高层模块深入到建造者内部的实现类,
//而且导演类可以有多个,根据业务逻辑分别用来建造不同的产品并输出。

 

posted @ 2017-09-22 19:15  sloth_ccc  阅读(323)  评论(0编辑  收藏  举报