设计模式之建造者模式(Builder Pattern)

建造者模式包含四个角色:
Builder:抽象建造者
ConcreteBuilder:具体建造者
Director:指挥者
Product:产品角色

Builder:

public abstract class Builder {

    //第一步,装CPU
    public abstract void BuilderCPU();

    //第二步,装主板
    public abstract void BuilderMainboard();

    //第三步,装硬盘
    public abstract void BuilderHD();

    //返回产品,获得组装好的电脑
    public abstract Computer getComputer();
}

ConcreteBuilder:

public class ConcreteBuilder extends Builder{

    //创建产品实例
    Computer computer = new Computer();

    //组装产品
    @Override
    public void BuilderCPU() {
        // TODO Auto-generated method stub
        computer.add("cpu");
    }

    @Override
    public void BuilderMainboard() {
        // TODO Auto-generated method stub
        computer.add("主板");
    }

    @Override
    public void BuilderHD() {
        // TODO Auto-generated method stub
        computer.add("硬盘");
    }

    @Override
    public Computer getComputer() {
        // TODO Auto-generated method stub
        return computer;
    }

}

Director:

public class Director {

    //指挥装机人员装电脑
    public void Construct(Builder builder){
        builder.BuilderCPU();
        builder.BuilderMainboard();
        builder.BuilderHD();
    }
}

Product:

public class Computer {

    //电脑组件的集合
    private List<String> parts = new ArrayList<>();

    //用于将组件组装到电脑里
    public void add(String part){
        parts.add(part);
    }

    public void show(){
        for(int i = 0; i < parts.size() ;i++){
            System.out.println("组装了"+parts.get(i));
        }
        System.out.println("电脑组装完成");
    }
}

BuilderPattern:

public class BuilderPattern {

    public static void main(String[] args) {

        //找到该店的老板和装机人员
        Director director = new Director();
        Builder builder = new ConcreteBuilder();

        //老板叫人去装电脑
        director.Construct(builder);

        //装完后,组装人员拿来装好的电脑
        Computer computer = builder.getComputer();
        //把电脑拿给小成
        computer.show();
    }
}

输出结果:

组装了cpu
组装了主板
组装了硬盘
电脑组装完成
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值