您的位置:首页 > 产品设计 > UI/UE

Java设计模式----建造者模式(Builder)

2015-10-20 11:35 561 查看
1.定义:

将一个复杂对象的创建与它的表示分离,这样可以使得同样的创建方式来构建不同的表示

2. 建造者模式通常包含4中元素:

1. Builder :抽象的接口,称为抽象建造者,用来规范产品各个组成部分的构建。这个接口之复杂对象组成部分的构建,并不涉及具体对象部件的创建

2. ConcreteBuilder : 实现Builder接口,称为具体建造者,具体化产品各个组成部分的构建。建造完成之后,提供产品的实例

3. Director: 调用建造者对象来构建复杂对象,在指导中涉及产品信息,只保证产品按一定的顺序创建

4. Product: 产品类,即要创建的复杂对象类

3. 示例代码:

产品类Product:

/**
* 产品类
* @author zqkj001
*
*/
public class Product {

private String part1;
private String part2;
public String getPart1() {
return part1;
}
public void setPart1(String part1) {
this.part1 = part1;
}
public String getPart2() {
return part2;
}
public void setPart2(String part2) {
this.part2 = part2;
}

}
抽象建造者类Builder:

/**
* 抽象建造者类
* @author zqkj001
*
*/
public interface Builder {
/**
* 产品零件构造方法1
*
*/
public void buildPart1();
/**
* 产品零件构造方法2
*
*/
public void buildPart2();

/**
* 产品返还
* @return
*/
public Product getResult();

}
具体建造者类 ConcreteBuilder:

/**
* 具体建造者类
* @author zqkj001
*
*/
public class ConcreteBuilder implements Builder{

private Product product=new Product();

@Override
public void buildPart1() {

product.setPart1("build part1...");

}

@Override
public void buildPart2() {

product.setPart2("build part2...");

}

@Override
public Product getResult() {

return product;
}

}
导演者类 Director:

/**
* 导演者类
* @author zqkj001
*
*/
public class Director {

/**
* 需要使用的当前建造者对象
*/
private Builder builder;

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

/**
* 产品构造方法,负责调用各个零件构造方法
*/
public void  buildProduct(){
builder.buildPart1();
builder.buildPart2();
}
}
测试类:

public class BuilderTest {

public static void main(String[] args) {

Builder builder=new ConcreteBuilder();

Director director=new  Director(builder);

director.buildProduct();

Product product=builder.getResult();

System.out.println(product.getPart1());

System.out.println(product.getPart2());

}
}


4. 使用建造者模式的场合和好处

a、建造者模式的好处:

1.使用建造者模式可以使客户端不必知道产品内部组成的细节。

2.具体的建造者类之间是相互独立的,对系统的扩展非常有利。

3.由于具体的建造者是独立的,因此可以对建造过程逐步细化,而不对其他的模块产生任何影响。

b、使用场合:

1.创建一些复杂的对象时,这些对象的内部组成构件间的建造顺序是稳定的,但是对象的内部组成构件面临着复杂的变化。

2.要创建的复杂对象的算法,独立于该对象的组成部分,也独立于组成部分的装配方法时。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: