/*建造者模式:建一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.
* 如果,我们用了建造者模式,那么用户就只需要自定需要构建的类型就而已得到他们,而具体的构建的过程和细节就不需要知道.
*
* 建造者模式在但创建复杂的对象的算法应该应该独立于组成部分以及他们的装配方式时的使用模式.
* */
package com.zwy;
import java.util.ArrayList;
import java.util.List;
public class BuilderTest {
public static void main(String[] args) {
Builder builder = new ConcreteBuilderA();
Director director = new Director();
director.Construct(builder);
builder.getResult().show();
}
}
class Product {
List<String> parts = new ArrayList<String>();
public void Add(String part){
parts.add(part);
}
public void show() {
for(String part : parts){
System.out.println(part);
}
}
}
/*构造这的基类*/
abstract class Builder {
protected Product procduct;
public abstract void BuilderPartA();
public abstract void BuilderPartB();
public abstract Product getResult();
}
/*具体的构造类*/
class ConcreteBuilderA extends Builder{
public ConcreteBuilderA(){
this.procduct = new Product();
}
@Override
public void BuilderPartA() {
procduct.Add("ConcreteBuilderA BuilderPartA");
}
@Override
public void BuilderPartB() {
procduct.Add("ConcreteBuilderA BuilderPartB");
}
@Override
public Product getResult() {
return this.procduct;
}
}
/**/
class Director {
public void Construct(Builder builder){
builder.BuilderPartA();
builder.BuilderPartB();
}
}