java 建造者模式(大话设计模式)

建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。【继承+组合 】

在这里插入图片描述

public abstract class Builder {
    public abstract void buildPartA();

    public abstract void buildPartB();

    public abstract Product getBuildResult();
}
/**
 * 具体建造者类
 * 
 * @author liu yuning
 *
 */
public class ConcreteBuilder1 extends Builder {

    private Product product = new Product();

    @Override
    public void buildPartA() {
	product.add("部件A");
    }

    @Override
    public void buildPartB() {
	product.add("部件B");
    }

    @Override
    public Product getBuildResult() {
	return product;
    }

}

/**
 * 具体建造者类,建造的对象时Product,通过build使Product完善
 * 
 * @author liu yuning
 *
 */
public class ConcreteBuilder2 extends Builder {

    private Product product = new Product();

    @Override
    public void buildPartA() {
	product.add("部件X");
    }

    @Override
    public void buildPartB() {
	product.add("部件Y");
    }

    @Override
    public Product getBuildResult() {
	return product;
    }

}

/**
 * 指挥者类,用来指挥建造过程
 *
 * @author liu yuning
 */
public class Director {

    public void construct(Builder builder) {
        builder.buildPartA();
        builder.buildPartB();
    }
}
/**
 * 产品类,由多个部件组成
 * 
 * @author liu yuning
 *
 */
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);
	}
    }
}
/**
 * 建造客户端
 * 
 * @author liu yuning
 *
 */
public class BuilderClient {

    public static void main(String[] args) {
	Director director = new Director();
	Builder builder1 = new ConcreteBuilder1();
	Builder builder2 = new ConcreteBuilder2();

	director.construct(builder1);
	Product product1 = builder1.getBuildResult();
	product1.show();

	director.construct(builder2);
	Product product2 = builder2.getBuildResult();
	product2.show();

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值