构造者模式

构造者模式解析:

Builder:是为创建一个Product对象的各个部件指定的抽象接口

ConcreteBuilder:它是具体的构建者,实现Builder接口,构造和装配各个部件。

Product:具体的产品

Director:指挥者,它是构建一个使用Builder接口的对象。

1.创建产品类:

//产品类:一般在产品类中写入要构建的一些功能.

public class Product{
    public Product(){
    }
}

2.抽象构造方法(这里一般是写构建的每一个细节)

//抽象建造方法:

abstract public class Builder{
    public abstract void buildPart1();//这里代表构建的细节

    public abstract void buildPart2();

    public abstract Product creat();
}
3.实现建造类,产品的零件制造

//具体的建造类:产品的零件制造

public class ConcreteBuilder extends Builder{

    private Product product = new Product() ;
    public void buildPart1(){
        System.out.println("build part one.");
    }

    public void buildPart2(){
        System.out.println("build part two.");
    }

    public Product create(){
        return product;
    }
}
4.产品的建造过程

//产品的建造过程:

public class Director{
    private Builder builder;

    public Director(Builder builder){
        this.builder = builder;
    }

    public void construct(){
        builder = new ConcreteBuilder();

        builder.buildPart1();

        builder.buildPart2();

        builder.create();

        //continue with other code
    }
}

5.测试

//测试:

public class Client{

    private static Director director;

    private static Builder builder = new ConcreteBuilder();

    public void requestBuild(){
        // director = new Director(builder);
    }

    public static void main(String[] args) {
        director = new Director(builder);
        director.construct();
    }

}

在 Java 中,构造者模式(Builder Pattern)是一种创建型设计模式,用于将一个复杂对象的构建过程与其表示分离。这种模式允许使用相同的构建过程来创建不同的对象表示,适用于对象属性较多、构造参数复杂的情况。 ### 构造者模式的主要角色 1. **抽象建造者(Builder)**:定义构建产品的各个步骤的接口。 2. **具体建造者(Concrete Builder)**:实现 Builder 接口,提供具体的构建逻辑,并返回最终的产品对象。 3. **指导者(Director)**:负责调用建造者的各个步骤来构建产品。 4. **产品(Product)**:最终要创建的对象。 ### 使用方法和示例 以下是一个典型的 Java 示例,展示如何通过构造者模式构建一个 `Computer` 对象: #### 1. 定义产品类 ```java public class Computer { private String CPU; private String RAM; private String storage; private String GPU; // 展示产品信息 @Override public String toString() { return "Computer [CPU=" + CPU + ", RAM=" + RAM + ", Storage=" + storage + ", GPU=" + GPU + "]"; } // 内部静态建造者类 public static class Builder { private String CPU; private String RAM; private String storage; private String GPU; public Builder setCPU(String CPU) { this.CPU = CPU; return this; } public Builder setRAM(String RAM) { this.RAM = RAM; return this; } public Builder setStorage(String storage) { this.storage = storage; return this; } public Builder setGPU(String GPU) { this.GPU = GPU; return this; } public Computer build() { Computer computer = new Computer(); computer.CPU = this.CPU; computer.RAM = this.RAM; computer.storage = this.storage; computer.GPU = this.GPU; return computer; } } } ``` #### 2. 使用建造者创建对象 ```java public class Client { public static void main(String[] args) { Computer computer = new Computer.Builder() .setCPU("Intel i7") .setRAM("16GB") .setStorage("1TB SSD") .setGPU("NVIDIA RTX 3080") .build(); System.out.println(computer.toString()); } } ``` #### 输出结果: ``` Computer [CPU=Intel i7, RAM=16GB, Storage=1TB SSD, GPU=NVIDIA RTX 3080] ``` ### 应用场景 - 当对象的构造过程较为复杂,需要多个步骤完成时。 - 需要确保对象在构建过程中保持一致性,例如不同配置下的计算机、汽车等。 - 提供清晰的代码结构,避免冗长的构造函数或大量的 setter 方法。 ### 优势 - **解耦**:将对象的构建与表示分离,提高了代码的可读性和可维护性。 - **灵活性**:可以逐步构建对象,甚至动态决定某些步骤是否执行。 - **控制构建过程**:通过指导者类(Director),可以对构建流程进行统一管理。 该模式非常适合处理具有多个可选参数的对象创建问题,尤其是当这些参数之间可能存在依赖关系时[^3]。 ---
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值