设计模式——建造者模式

当涉及到创建一个复杂对象,其构造过程可能涉及多个步骤,并且这些步骤可能因为不同的需求而变化时,建造者模式就显得很有用。它允许你将对象的构造与表示分离,从而可以使用相同的构造过程来创建不同的表示。

在建造者模式中,有以下几个关键角色:

  1. 产品(Product):表示正在构建的复杂对象。

  2. 抽象建造者(Builder):定义了构建产品所需要的各个部分的抽象接口,具体的建造者将实现这些接口来构建具体的产品。

  3. 具体建造者(Concrete Builder):实现了抽象建造者接口,负责构建产品的各个部分,并提供一个获取构建完成后的产品的方法。

  4. 指挥者(Director):负责使用具体建造者来构建产品,也可以包含一些控制构建过程的逻辑。

// 产品类:电脑
class Computer {
    private String cpu;
    private String memory;
    private String storage;

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

    public void setMemory(String memory) {
        this.memory = memory;
    }

    public void setStorage(String storage) {
        this.storage = storage;
    }

    @Override
    public String toString() {
        return "Computer{" +
                "cpu='" + cpu + '\'' +
                ", memory='" + memory + '\'' +
                ", storage='" + storage + '\'' +
                '}';
    }
}

// 抽象建造者接口
interface ComputerBuilder {
    void buildCPU();
    void buildMemory();
    void buildStorage();
    Computer getResult();
}

// 具体建造者:高性能电脑建造者
class HighPerformanceComputerBuilder implements ComputerBuilder {
    private Computer computer = new Computer();

    @Override
    public void buildCPU() {
        computer.setCPU("Intel Core i7");
    }

    @Override
    public void buildMemory() {
        computer.setMemory("16GB DDR4");
    }

    @Override
    public void buildStorage() {
        computer.setStorage("1TB SSD");
    }

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

// 指挥者:负责构建电脑
class ComputerDirector {
    private ComputerBuilder builder;

    public ComputerDirector(ComputerBuilder builder) {
        this.builder = builder;
    }

    public Computer construct() {
        builder.buildCPU();
        builder.buildMemory();
        builder.buildStorage();
        return builder.getResult();
    }
}

public class Main {
    public static void main(String[] args) {
        ComputerBuilder builder = new HighPerformanceComputerBuilder();
        ComputerDirector director = new ComputerDirector(builder);

        Computer computer = director.construct();
        System.out.println(computer);
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值