设计模式之build

设计模式之builds

​ Builder模式是一种创建型模式,它允许用户在不了解内部构造细节的情况下,通过逐步添加或设置值来创建复杂对象.这种模式将构建复杂对象的过程与它的表示分离开来,使得同样的构建过程可以创建不同的表示在Builder模式中,通常会有一个Builder类,它包含构建复杂对象所需的各个步骤或组成部分。用户通过调用Builder类中的方法来逐步构建对象。当所有的必要步骤都完成时,用户会调用一个特定的方法来生成最终的对象。


​ 在使用 Builder 模式时,通常有一个 Director(指挥者)类和一个 Builder 接口,以及具体的 Builder 实现类。Director 负责调用 Builder 的方法来构建对象,而 Builder 负责具体的构建过程。这样,客户端代码只需要关注 Director 和 Builder,而不需要关心具体的构建过程。

**
Builder(建造者)** 是一种创建型设计模式,它的主要目的是将一个复杂对象的构建过程与其表示相分离,使得同样的构建过程可以创建不同的表示。

在使用 Builder 模式时,通常有一个 Director(指挥者)类和一个 Builder 接口,以及具体的 Builder 实现类。Director 负责调用 Builder 的方法来构建对象,而 Builder 负责具体的构建过程。这样,客户端代码只需要关注 Director 和 Builder,而不需要关心具体的构建过程。

以下是 Builder 模式的一般结构:

  1. 产品类(Product):表示被构建的复杂对象。在 Builder 模式中,它通常有多个部分。

  2. 抽象建造者类(Builder):定义构建产品的抽象接口,包括构建每个部分的方法。

  3. 具体建造者类(ConcreteBuilder):实现 Builder 接口,负责构建产品的具体部分,并提供获取最终产品的方法。

  4. 指挥者类(Director):负责使用 Builder 接口构建产品,它通常包含一个构建方法,该方法接收一个 Builder 对象作为参数,并按照一定的顺序调用 Builder 的方法来构建产品。

    // 1. 产品类
    class Computer {
        private String CPU;
        private String RAM;
        private String storage;
    
        public Computer(String CPU, String RAM, String storage) {
            this.CPU = CPU;
            this.RAM = RAM;
            this.storage = storage;
        }
    
        // 省略 getter 和 setter 方法
    }
    
    // 2. 抽象建造者类
    interface ComputerBuilder {
        void buildCPU(String CPU);
        void buildRAM(String RAM);
        void buildStorage(String storage);
        Computer getResult();
    }
    
    // 3. 具体建造者类
    class ConcreteComputerBuilder implements ComputerBuilder {
        private Computer computer;
    
        public ConcreteComputerBuilder() {
            this.computer = new Computer("", "", "");
        }
    
        @Override
        public void buildCPU(String CPU) {
            computer.setCPU(CPU);
        }
    
        @Override
        public void buildRAM(String RAM) {
            computer.setRAM(RAM);
        }
    
        @Override
        public void buildStorage(String storage) {
            computer.setStorage(storage);
        }
    
        @Override
        public Computer getResult() {
            return computer;
        }
    }
    
    // 4. 指挥者类
    class Director {
        public void construct(ComputerBuilder builder) {
            builder.buildCPU("Intel i7");
            builder.buildRAM("16GB");
            builder.buildStorage("512GB SSD");
        }
    }
    
    // 客户端代码
    public class Client {
        public static void main(String[] args) {
            // 创建具体建造者
            ComputerBuilder builder = new ConcreteComputerBuilder();
    
            // 创建指挥者
            Director director = new Director();
    
            // 指挥者构建产品
            director.construct(builder);
    
            // 获取构建好的产品
            Computer computer = builder.getResult();
    
            // 使用产品
            System.out.println("Computer CPU: " + computer.getCPU());
            System.out.println("Computer RAM: " + computer.getRAM());
            System.out.println("Computer Storage: " + computer.getStorage());
        }
    }
    
    

    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值