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