建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
建造者模式的基本代码:
1、Product产品类
import java.util.ArrayList;
import java.util.List;
public class Product
{
List<String> parts=new ArrayList<String>();
public void add(String part)
{
parts.add(part);
}
public void show()
{
System.out.println("产品创建---");
for (String part : parts)
{
System.out.println(part);
}
}
}
2、Builder抽象建造者类,为创建一个Product对象的各个部件指定抽象接口。
public abstract class Builder
{
public abstract void buildPartA();
public abstract void buildPartB();
public abstract Product getResult();
}
3、ConcreteBuilder1具体建造者类,继承或实现抽象类或接口,构造或装备各个部件。
public class ConcreteBuilder1 extends Builder
{
private Product product=new Product();
@Override
public void buildPartA()
{
// TODO Auto-generated method stub
product.add("部件A");
}
@Override
public void buildPartB()
{
// TODO Auto-generated method stub
product.add("部件B");
}
@Override
public Product getResult()
{
// TODO Auto-generated method stub
return product;
}
}
4、ConcreteBuilder2具体建造者类
public class ConcreteBuilder2 extends Builder
{
private Product product=new Product();
@Override
public void buildPartA()
{
// TODO Auto-generated method stub
product.add("部件X");
}
@Override
public void buildPartB()
{
// TODO Auto-generated method stub
product.add("部件Y");
}
@Override
public Product getResult()
{
// TODO Auto-generated method stub
return product;
}
}
5、Direct指挥类,构建一个使用Builder接口的对象。
public class Direct
{
public void Constructor(Builder builder)
{
// TODO Auto-generated method stub
builder.buildPartA();
builder.buildPartB();
}
}
6、客户端代码
import java.util.ArrayList;
import java.util.List;
public class Product
{
List<String> parts=new ArrayList<String>();
public void add(String part)
{
parts.add(part);
}
public void show()
{
System.out.println("产品创建---");
for (String part : parts)
{
System.out.println(part);
}
}
}
参考资料:程杰老师<大话设计模式>