0
点赞
收藏
分享

微信扫一扫

【设计模式】深入解析建造者模式


目录

一、前言

二、建造者模式定义

三、建造者模式的结构

四、应用

五、示例代码 

六、主要解决

七、建造者模式的优缺点

1、优点

2、缺点

八、总结

一、前言

        在软件开发中,创建复杂对象时往往需要多个步骤和参数,为了简化对象的构建过程并提高可读性,设计模式中的建造者模式应运而生。本文将深入讨论建造者模式,探索其概念、结构以及在实际项目中的应用,帮助您构建更加优雅和可维护的对象。

二、建造者模式定义

        建造者模式是一种创建型设计模式,它的主要目的是将一个复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。通过将构建过程分解成多个步骤,然后由具体的建造者来逐步构建对象,从而实现了对象的灵活构建。

【设计模式】深入解析建造者模式_建造者

三、建造者模式的结构

        建造者模式是一种创建型设计模式,它使得你能够分步骤地创建复杂对象。建造者模式可以让你使用相同的创建代码来生成不同类型和形式的对象。

建造者模式由以下几个主要部分组成:

1. 产品类:该类定义了所需的对象类型及其属性。

2. 抽象建造者类:该类定义了建造者的接口,包括创建和设置产品的各个部分的方法。

3. 具体建造者类:该类实现抽象建造者接口,并实现构建产品的各个部分的方法。每个具体建造者类都可以构建一种特定类型的产品。

4. 导演类:该类使用建造者类来构建具体产品,它负责将不同的建造步骤组合起来以生成完整的产品。

5. 客户端类:该类通过导演类使用具体建造者类来构建产品。客户端只需要知道所需的产品类型即可。

        在应用建造者模式时,需要首先创建产品类,然后创建抽象建造者类以及其具体实现类,最后创建导演类和客户端类。通过组合和调用这些类的方法,可以生成不同形式的复杂对象。

四、应用

        建造者模式通常用于创建复杂对象,尤其是当对象具有许多可选属性时。以下是建造者模式的一些常见应用场景:

1. 使用多个步骤构建一个复杂的对象,每个步骤都有不同的实现方式。

2. 当对象有多种可能的配置选项时,建造者模式可以更灵活地构建对象,而不需要创建每个可能的对象。

3. 简化客户端代码,使客户端无需知道对象的实现细节即可创建对象。

4. 对象根据配置不同而发生变化,例如数据库连接或网络连接可以使用不同的配置创建,但是可以使用相同的代码进行构建。

总之,建造者模式可以帮助开发者更灵活地创建复杂对象,并减少客户端代码的复杂性。

五、示例代码 

// 产品类
class Computer {
    private String CPU;
    private String RAM;
    private String storage;

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

    public void setRAM(String RAM) {
        this.RAM = RAM;
    }

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

    // 省略其他方法
}

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

// 具体建造者
class GamingComputerBuilder implements ComputerBuilder {
    private Computer computer = new Computer();

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

    @Override
    public void buildRAM() {
        computer.setRAM("32GB");
    }

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

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

// 指挥者
class Director {
    private ComputerBuilder builder;

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

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

// 客户端代码
public class Main {
    public static void main(String[] args) {
        ComputerBuilder builder = new GamingComputerBuilder();
        Director director = new Director(builder);
        Computer computer = director.construct();
        
        // 使用构建好的computer对象
    }
}

六、主要解决

        建造者模式主要解决了创建复杂对象时的可读性和可维护性问题。当创建一个对象需要调用多个构造函数或者设置多个属性时,使用建造者模式可以使创建对象的代码更加清晰易读,并且降低代码的耦合度,提高代码的可扩展性和可维护性。此外,建造者模式还可以对同一对象的不同创建过程进行复用和扩展,提高代码的复用性。

七、建造者模式的优缺点

1、优点

1. 将对象的创建和使用分离,符合单一职责原则。
2. 易于添加或更改对象的属性。
3. 易于扩展,添加新的Builder实现即可。
4. 可以控制对象的创建过程,避免了创建不完整的对象。

2、缺点

1. 增加了代码量,需要编写多个Builder类。
2. 如果需要构建的对象比较简单,使用建造者模式会显得繁琐。

八、总结

        建造者模式通过分离构建步骤和对象表示,使得复杂对象的构建变得灵活、可维护。通过抽象建造者和指挥者的协作,可以创建出不同配置的对象,提高了代码的可读性和可复用性。

举报

相关推荐

0 条评论