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

目录
  • 前言
  • 定义
  • 结构
  • 实现方法
  • 应用场景
  • 总结

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

到此这篇关于Java创建型设计模式之建造者模式详解的文章就介绍到这了,更多相关Java建造者模式内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • java实现建造者模式(Builder Pattern)

    一.什么是建筑者模式?   建造者模式(Builder Pattern)使用多个简单的对象一步一步构建一个复杂的对象.   一个 Builder 类会一步一步构造最终的对象,该 Builder 类独立于其他对象.   建造者模式主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成:由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定. 二.建造者模式的具体实现 结构图 建造者模式中的四个角色:

  • 轻松掌握Java建造者模式

    建造者模式针对的是复杂对象的构建,比如一个产品有多个部分构成,每个部分都可以单独进行生产,这时候就可以用建造者模式,由Builder构造产品的每个部分,然后又director完成最后产品的组装. 特点: 1.分工更加明确,组建和构造分开,能更好的控制产品的生产. 2.容易扩展,有新的需求的时候,只要实现Builder借口就可以了. 企业级开发和常用框架中的应用:JMail 组成:产品类,抽象建造者,建造者,导演. 产品类: public class Product{ private String

  • Java 超详细讲解设计模式之中的建造者模式

    目录 1.什么是建造者模式? 2.建造者模式的定义 3.建造者模式的优缺点 4.建造者模式的结构 5.建造者模式代码演示 6.建造者模式的应用场景 7.建造者模式和工厂模式的区别 1.什么是建造者模式? 我们知道在软件开发过程中有时需要创建一个很复杂的对象,通常由多个子部件按一定的步骤组合而成. 例如,比如我们在自己在组装一台计算机的时候,需要有 CPU.主板.内存.硬盘.显卡.机箱.显示器.键盘.鼠标等部件组装而成的.比如学校需要采购100台计算机,学校不可能自己把零件买过来自己组装,肯定是告

  • 深入理解Java设计模式之建造者模式

    目录 一.什么是建造者模式 二.建造者模式的应用场景 三.建造者模式的优缺点 四.工厂模式和建造者模式的对比 五.建造者模式的实现 六.总结 一.什么是建造者模式 建造者模式也称生成器模式 定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示(依赖倒转) 产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量.在本类图中,产品类是一个具体的类,而非抽象类.实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们

  • Java设计模式之建造者模式的示例详解

    目录 定义 案例 需求 方案一 方案二 对比分析 总结 建造者模式的优势: 注意点 定义 建造者模式(Builder Pattern),又叫生成器模式,是一种对象构建模式 它可以将复杂对象的建造过程抽象出来,使这个抽象过程的不同实现方法可以构造出不同表现的对象.建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可 以构建它们,用户不需要知道内部的具体构建细节. 案例 需求 女生每天化妆,假如只需要做发型,香水,衣服,并要求按照发型——>香水——>衣服的顺序进行,

  • java设计模式--建造者模式详解

    目录 引例 一般解法 代码: AbstractHouse(房子) Bungalow(平房) Villa (别墅) 客户端调用 建造者模式 建造者模式解法 代码: House类(Product产品) HouseBuilder类(Builder抽象建造者) 3.Bungalow类(ConcreteBuilder具体建造者A) 4.Villa类(ConcreteBuilder具体建造者B) 5.HouseDirector类(Director指挥者) 客户端调用 总结 引例 需求:建造房子,建造过程包括

  • Java行为型设计模式之策略模式详解

    目录 1.策略设计模式定义 2.策略设计模式的有点与不足 3.策略设计模式的实现思路 4.代码示例 5.策略设计模式的应用场景 编程是一门艺术,大批量的改动显然是非常丑陋的做法,用心的琢磨写的代码让它变的更美观. 在现实生活中常常遇到实现某种目标存在多种策略可供选择的情况,例如超市促销可以釆用打折.送商品.送积分等方法. 在软件开发中也常常遇到类似的情况,当实现某一个功能存在多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能,如数据排序策略有快速排序.归并排序.选

  • Java 深入理解创建型设计模式之建造者模式

    1.提出问题 假如说,我们需要建房子:这一过程为打桩.砌墙.封顶.房子有各种各样的,比如普通房,高楼,别墅,各种房子的过程虽然一样,但是要求不要相同的.3)请编写程序,完成需求. 传统的想法应该就是下面这个类图的形式.. 那么这种写法的优点就是 比较好理解,简单易操作. 缺点则是:设计的程序结构,过于简单,没有设计缓存层对象,程序的扩展和维护不好.也就是说,这种设计方案,把产品(即: 房子)和创建产品的过程(即: 建房子流程)封装在一起,耦合性增强了. 解决方案:  将产品和产品建造过程解耦 

  • Java结构型设计模式之组合模式详解

    目录 组合模式 应用场景 优缺点 主要角色 组合模式结构 分类 透明组合模式 创建抽象根节点 创建树枝节点 创建叶子节点 客户端调用 安全组合模式 创建抽象根节点 创建树枝节点 创建叶子节点 客户端调用 组合模式 组合模式(Composite Pattern)也称为整体-部分(Part-Whole)模式,属于结构型模式. 它的宗旨是通过将单个对象(叶子节点)和组合对象(树枝节点)用相同的接口进行表示,使得客户端对单个对象和组合对象的使用具有一致性. 组合模式一般用来描述整体与部分的关系,它将对象

  • Java中常用的设计模式之建造者模式详解

    目录 优点 缺点 使用场景 一.实现方式 二.实现方式 1.引入依赖 2.实现 三.测试 总结 优点 1.建造者独立,易扩展. 2.便于控制细节风险. 缺点 1.产品必须有共同点,范围有限制. 2.如内部变化复杂,会有很多的建造类. 使用场景 1.需要生成的对象具有复杂的内部结构. 2.需要生成的对象内部属性本身相互依赖. 一.实现方式 package com.asurplus.common.builder.style1; public class UserInfo { private Stri

  • 深入理解JavaScript系列(27):设计模式之建造者模式详解

    介绍 在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成:由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法确相对稳定.如何应对这种变化?如何提供一种"封装机制"来隔离出"复杂对象的各个部分"的变化,从而保持系统中的"稳定构建算法"不随着需求改变而改变?这就是要说的建造者模式. 建造者模式可以将一个复杂对象的构建与其表示相分离,使得同样的构建过程可

  • java编程创建型设计模式工厂方法模式示例详解

    目录 1.什么是工厂方法模式? 2.案例实现 3.JDK中的工厂方法模式 1.什么是工厂方法模式? 工厂方法模式设计方案:  将披萨项目的实例化功能抽象成抽象方法,在不同的口味点餐子类中具体实现. 工厂方法模式:  定义了一个创建对象的抽象方法,由子类决定要实例化的类.工厂方法模式将对象的实例化推迟到子类. 何时使用?  不同条件下创建不用实例时.方法是让子类实现工厂接口. 2.案例实现 假如说,我们现在有这样一个需求:客户在点披萨时,可以点不同口味的披萨,比如北京的奶酪pizza.北京的胡椒p

  • Java创建型设计模式之工厂方法模式深入详解

    目录 简单工厂模式 定义产品对象 创建工厂类 工厂使用反射 工厂方法模式 概述 应用场景 优缺点 主要角色 工厂方法模式的基本使用 创建抽象产品 创建具体产品 创建抽象工厂 创建具体工厂 客户端执行 简单工厂模式 简单工厂模式(Simple Factory Pattern)是指由一个工厂对象决定创建出哪一种产品类的实例,但是它不属于设计模式. 简单工厂适用于工厂类负责创建的对象较少的场景,且客户端只需要传入工厂类的参数,对于如何创建对象的逻辑不需要关心. 定义产品对象 public interf

  • Java创建型模式之建造者模式详解

    目录 一.介绍 二.UML类图 三.具体代码 四.lombok的@Builder注解(拓展) 五.在Spring中的应用 一.介绍 建造者模式(Builder Pattern)属于创建型模式.如果一个对象具有复杂的内部结构或者内部属性本身相互依赖(有顺序要求),甚至对象中的某些属性的创建也有一个很复杂的过程,就可以使用建造者模式 二.UML类图 三.具体代码 业务代码 public class Product { private String part1; private String part

  • Java结构型设计模式中建造者模式示例详解

    目录 建造者模式 概述 角色 优缺点 应用场景 基本使用 创建产品类 创建建造者类 使用 链式写法 创建产品类与建造者类 使用 建造者模式 概述 建造者模式(Builder Pattern)属于创建型模式. 它是将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示. 简而言之:建造者模式就是使用多个简单的对象一步一步构建成一个复杂的对象. 建造者模式适用于创建对象需要很多步骤,但是步骤的顺序不一定固定.如果一个对象有非常复杂的内部结构(很多属性),可以将复杂对象的创建和使用进行分

  • Java 深入理解创建型设计模式之原型模式

    1.思考问题 现在有一只羊 tom,姓名为: tom,年龄为:1,颜色为:白色,请编写程序创建和 tom羊属性完全相同的10只羊. 按照传统的思路来,我们可能会按照下面的方式去写. 那么这种写法的优缺点自然而然就出来了: 优点是比较好理解,简单易操作. 缺点是在创建新的对象时,总是需要重新获取原始对象的属性,如果创建的对象比较复杂时,效率较低.总是需要重新初始化对象,而不是动态地获得对象运行时的状态,不够灵活. 改进的思路分析:Java中Object类是所有类的根类,Object类提供了一个 c

随机推荐