建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
建造者模式是在当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时适用的模式。
首先定义一个产品类Product
public class Product {
List<String> list=new ArrayList<String>();
public void add(String part){
list.add(part);
}
public void show(){
Iterator<String> iterator =list.iterator();
while(iterator.hasNext()){
String part=iterator.next();
System.out.println(part);
}
}
}
接着定义一个builder接口,用来定义装配的方法
public interface IBuilder {
public void buildePartA();
public void buildePartB();
public Product getProduct();
}
然后定义具体的建造者类
public class ConcreteBuilder1 implements IBuilder{
private Product product=new Product();
@Override
public void buildePartA() {
product.add("部件A");
}
@Override
public void buildePartB() {
product.add("部件B");
}
@Override
public Product getProduct() {
return product;
}
}
public class ConcreteBuilder2 implements IBuilder {
private Product product=new Product();
@Override
public void buildePartA() {
product.add("部件C");
}
@Override
public void buildePartB() {
product.add("部件D");
}
@Override
public Product getProduct() {
return product;
}
}
最后定义一个指挥者类Command
public class Command {
public void construct(IBuilder builder){
builder.buildePartA();
builder.buildePartB();
}
}
客户端代码
public static void main(String[] args) {
//建造者模式
Command command=new Command();
IBuilder builder1=new ConcreteBuilder1();
IBuilder builder2=new ConcreteBuilder2();
//指挥者用ConcreteBuilder1的方法来创造产品
command.construct(builder1);
Product product1=builder1.getProduct();
product1.show();
command.construct(builder2);
Product product2=builder2.getProduct();
product2.show();
}
时间: 2024-10-02 01:39:43