建造者设计模式

     建造者模式(又称生成器模式)将一个复杂对象的构建过程和它的表示分离,从而使同样的构建过程,可以生成不同的表示。建造者模式将一个复杂对象的构建过程分成一个个简单的步骤,用户只需要了解对象的类型和内容,无须关注复杂对象的构建过程,帮助用户屏蔽掉内部具体的构建细节。建造者模式的结构图如下:

java建造者模式-LMLPHP

建造者模式主要角色如下:

    建造者接口(Builder):Builder接口主要用来定义建造者构建产品对象的各部分的行为

    具体建造者(ConcreteBuilder):具体建造者是用来直接创建产品对象的,具体建造者要实现两类方法,一类是建造方法,例如:buildPart1()、buildPart2(),另一类是获取建造好的产品对象的方法

    导演(Director):导演通过调用具体建造者来创建需要的产品对象

    产品(Product):产品是用户需要的复杂对象

建造者模式和工厂模式的区别:

    工厂模式一般都是创建一个产品对象,只需要将产品对象创建出来,不关心产品对象的组成细节和组成过程。

    建造者模式也是创建一个产品对象,不同的是建造者模式不仅要将产品对象创建出来,还要关心产品对象的组成细节和组成过程。

package com.hs.pattern.builder;

public class Product {

}
package com.hs.pattern.builder;

public interface Builder {

    void buildPart1();

    void buildPart2();

    Product getProduct();
}
package com.hs.pattern.builder;

public class ConcreteBuilder implements Builder {

    private Product product;

    @Override
    public void buildPart1() {
        // TODO Auto-generated method stub

    }

    @Override
    public void buildPart2() {
        // TODO Auto-generated method stub

    }

    @Override
    public Product getProduct() {
        // TODO Auto-generated method stub
        return product;
    }

}
package com.hs.pattern.builder;

public class Director {

    private Builder builder;

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

    public Product builder(){
        builder.buildPart1();
        builder.buildPart2();
        return builder.getProduct();
    }

}
01-07 23:00