设计模式之建造者模式

需要的类:抽象构建,具体构建,具体产品,建造者

/**
 * 抽象构建
 */
public interface AbstractBuilder {
    /**
     * 建造主板的方法
     */
    void buildMainboard();
    /**
     * 建造硬盘的方法
     */
    void buildHardDisk();

    /**
     * 建造CPU的方法
     */
    void buildCPU();

    /**
     * 构建成品的方法
     */
    Computer buildComputer();
}

 

 

/**
 * 具体产品:电脑
 */
public class Computer {

    /**
     * 主板
     */
    private String mainboard;

    /**
     * 硬盘
     */
    private String hardDisk;

    /**
     * CPU
     */
    private String CPU;

    public String getMainboard() {
        return mainboard;
    }

    public void setMainboard(String mainboard) {
        this.mainboard = mainboard;
    }

    public String getHardDisk() {
        return hardDisk;
    }

    public void setHardDisk(String hardDisk) {
        this.hardDisk = hardDisk;
    }

    public String getCPU() {
        return CPU;
    }

    public void setCPU(String CPU) {
        this.CPU = CPU;
    }

    @Override
    public String toString() {
        return "Computer{" +
                "mainboard='" + mainboard + '\'' +
                ", hardDisk='" + hardDisk + '\'' +
                ", CPU='" + CPU + '\'' +
                '}';
    }
}

 

/**
 * 具体构建:苹果电脑构建
 */
public class AppleBuilder implements AbstractBuilder{

    private Computer computer =new Computer();

    @Override
    public void buildMainboard() {
        computer.setMainboard("苹果主板");
    }

    @Override
    public void buildHardDisk() {
        computer.setHardDisk("苹果硬盘");
    }

    @Override
    public void buildCPU() {
        computer.setCPU("苹果CPU");
    }

    @Override
    public Computer buildComputer() {
        return computer;
    }
}

 

/**
 * 具体构建:华为电脑构建
 */
public class HuaWeiBuilder implements AbstractBuilder{

    private Computer computer = new Computer();

    @Override
    public void buildMainboard() {
        computer.setMainboard("华为主板");
    }

    @Override
    public void buildHardDisk() {
        computer.setHardDisk("华为硬盘");
    }

    @Override
    public void buildCPU() {
        computer.setCPU("华为CPU");
    }

    @Override
    public Computer buildComputer() {
        return computer;
    }
}

 

/**
 * 建造者
 */
public class Director {
    public static Computer construct(AbstractBuilder builder){
        builder.buildMainboard();
        builder.buildHardDisk();
        builder.buildCPU();
        return builder.buildComputer();
    }
}

 

测试小程序:

public class Test {

    public static void main(String[] args){
        Computer com = Director.construct(new AppleBuilder());
        System.out.println(com);

        Computer com1 = Director.construct(new HuaWeiBuilder());
        System.out.println(com1);
    }
}

 

运行结果:

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值