Java创建型设计模式之建造者模式详解

2023-05-30 0 2,390

目录

建造者模式Java一种创建型设计模式,它的主要目的是一个复杂对象的构建过程分解多个简单对象的构建过程,并且使这些构建过程按照一定的顺序进行组装,最终实现对复杂对象的创建。本文将详细介绍Java中的建造者模式,包括它的定义结构、实现方法以及应用场景等方面。

前言

当我们需要创建一个具有多个属性或组件的对象时,通常需要使用大量的构造函数和setter方法。随着属性或组件的增加,这种方式很容易变得混乱和难以维护。此时,建造者模式就可以很好地解决这个问题。

建造者模式将对象的构建过程分解为多个步骤,由调用端根据需要选择所需的步骤,并按照一定的顺序进行组装,最终实现对复杂对象的创建。通过使用建造者模式,可以将对象的构建过程和具体的构建实现分离开来,从而提高代码的可维护性和可读性。

定义

建造者模式是一种创建型模式,其定义如下:

将一个复杂对象的构建过程与其表示相分离,使得同样的构建过程可以创建不同的表示。

换句话说,建造者模式将对象的构建过程分解为多个简单对象的构建过程,并按照一定的顺序进行组装,从而实现对复杂对象的创建。通过使用建造者模式,可以使对象的构建过程和具体的构建实现相互独立,从而提高代码的可维护性和可读性。

结构

建造者模式包含以下几个角色:

1.产品类(Product)

产品类是一个具有多个属性或组件的复杂对象,它由多个简单对象组成。

public class Product {
    private String part1;
    private String part2;
    private String part3;

    // 省略 getter 和 setter 方法
}

2.抽象建造者类(Builder)

建造者类是一个抽象类或接口,它定义了创建产品对象的各个部分的抽象方法。在实际应用中,通常需要定义多个不同的建造者类来创建不同类型的产品对象。

public interface Builder {
    void buildPart1();
    void buildPart2();
    void buildPart3();
    Product getResult();
}

3.具体建造者类(ConcreteBuilder)

具体建造者类是抽象建造者类的子类,它实现了抽象建造者类中定义的所有抽象方法,并且根据具体需求组装产品对象的各个部分。

public class ConcreteBuilder implements Builder {
    private Product product = new Product();

    @Override
    public void buildPart1() {
        product.setPart1(\"part1\");
    }

    @Override
    public void buildPart2() {
        product.setPart2(\"part2\");
    }

    @Override
    public void buildPart3() {
        product.setPart3(\"part3\");
    }

    @Override
    public Product getResult() {
        return product;
    }
}

4.指导者类(Director)

指导者类负责创建具体建造者类的实例,并调用具体建造者类中的方法来组装产品对象的各个部分。在实际应用中,通常只需要一个指导者类即可。

public class Director {
    public void construct(Builder builder) {
        builder.buildPart1();
        builder.buildPart2();
        builder.buildPart3();
    }
}

以上就是建造者模式的结构,下面我们来详细说明其实现方法。

实现方法

在实际使用建造者模式时,通常需要按照以下步骤进行操作:

1.定义产品类

首先,需要定义一个具有多个属性或组件的复杂对象,即产品类。

2.定义抽象建造者类

接着,需要定义一个抽象建造者类或接口,其中包含了创建产品对象各个部分的抽象方法。

3.定义具体建造者类

然后,需要定义一个或多个具体建造者类,它们是抽象建造者类的子类,实现了抽象建造者类中定义的抽象方法,并且根据具体需求组装产品对象的各个部分。

4.定义指导者类

最后,需要定义一个指导者类,它负责创建具体建造者类的实例,并调用具体建造者类中的方法来组装产品对象的各个部分。在实际应用中,通常只需要一个指导者类即可。

5.使用建造者模式创建对象

最后,我们可以使用建造者模式来创建对象,即先创建一个具体建造者类的实例,然后将该实例交给指导者类进行组装,最终得到一个完整的产品对象。

Builder builder = new ConcreteBuilder();
Director director = new Director();
director.construct(builder);
Product product = builder.getResult();

以上就是建造者模式的实现方法,下面我们来介绍一下它的应用场景。

应用场景

建造者模式适用于以下场景:

1.对象的构建过程比较复杂

当需要创建的对象较为复杂,需要通过多个步骤来生成时,可以使用建造者模式。

2.需要生成不同表示的对象

当需要按照不同的逻辑顺序来创建对象时,或者需要生成不同表示的对象时,可以使用建造者模式。

3.希望分离对象的构建过程和表示

当希望分离对象的构建过程和具体表示时,可以使用建造者模式。

例如,在Java中,StringBuilder就是使用了建造者模式。在程序中,我们经常需要拼接字符串,如果使用String类型来拼接字符串,每次拼接都会创建一个新的String对象,会浪费大量的内存。而使用StringBuilder,它将所需的字符串逐个添加进去,并在需要时将它们组装成一个完整的字符串对象,从而避免了不必要的内存浪费。

另外,在Java中,JDK中提供的Calendar类也使用了建造者模式。在创建日期时间对象时,需要设置年、月、日、时、分、秒等信息,如果使用普通的构造函数或setter方法来设置这些信息,会使得代码变得冗长且难以维护。而通过使用Calendar类提供的建造者模式,可以将这些设置信息分解为多个简单的步骤,并按照一定的顺序进行组装,从而实现对日期时间对象的创建。

总结

通过本文的介绍,我们了解了Java中的建造者模式,包括它的定义、结构、实现方法以及应用场景等方面。建造者模式将对象的构建过程分解为多个简单对象的构建过程,并按照一定的顺序进行组装,最终实现对复杂对象的创建。通过使用建造者模式,可以将对象的构建过程和具体的构建实现分离开来,从而提高代码的可维护性和可读性。

资源下载此资源下载价格为1小猪币,终身VIP免费,请先
由于本站资源来源于互联网,以研究交流为目的,所有仅供大家参考、学习,不存在任何商业目的与商业用途,如资源存在BUG以及其他任何问题,请自行解决,本站不提供技术服务! 由于资源为虚拟可复制性,下载后不予退积分和退款,谢谢您的支持!如遇到失效或错误的下载链接请联系客服QQ:442469558

:本文采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可, 转载请附上原文出处链接。
1、本站提供的源码不保证资源的完整性以及安全性,不附带任何技术服务!
2、本站提供的模板、软件工具等其他资源,均不包含技术服务,请大家谅解!
3、本站提供的资源仅供下载者参考学习,请勿用于任何商业用途,请24小时内删除!
4、如需商用,请购买正版,由于未及时购买正版发生的侵权行为,与本站无关。
5、本站部分资源存放于百度网盘或其他网盘中,请提前注册好百度网盘账号,下载安装百度网盘客户端或其他网盘客户端进行下载;
6、本站部分资源文件是经压缩后的,请下载后安装解压软件,推荐使用WinRAR和7-Zip解压软件。
7、如果本站提供的资源侵犯到了您的权益,请邮件联系: 442469558@qq.com 进行处理!

猪小侠源码-最新源码下载平台 Java教程 Java创建型设计模式之建造者模式详解 http://www.20zxx.cn/763189/xuexijiaocheng/javajc.html

猪小侠源码,优质资源分享网

常见问题
  • 本站所有资源版权均属于原作者所有,均只能用于参考学习,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,建议提前注册好百度网盘账号,使用百度网盘客户端下载
查看详情

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务