我的编程空间,编程开发者的网络收藏夹
学习永远不晚

java建造者模式的特点及应用场景

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

java建造者模式的特点及应用场景

建造者模式

模式的定义与特点

建造者(Builder)模式的定义:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。

该模式的主要优点如下:

各个具体的建造者相互独立,有利于系统的扩展。客户端不必知道产品内部组成的细节,便于控制细节风险。

其缺点如下:

产品的组成部分必须相同,这限制了其使用范围。如果产品的内部变化复杂,该模式会增加很多的建造者类。

建造者(Builder)模式和工厂模式的关注点不同:建造者模式注重零部件的组装过程,而工厂方法模式更注重零部件的创建过程,但两者可以结合使用。

(推荐视频:java视频教程)

模式的结构与实现

建造者(Builder)模式由产品、抽象建造者、具体建造者、指挥者等 4 个要素构成,现在我们来分析其基本结构和实现方法。

1. 模式的结构

建造者(Builder)模式的主要角色如下。

产品角色(Product):它是包含多个组成部件的复杂对象,由具体建造者来创建其各个滅部件。抽象建造者(Builder):它是一个包含创建产品各个子部件的抽象方法的接口,通常还包含一个返回复杂产品的方法 getResult()。具体建造者(Concrete Builder):实现 Builder 接口,完成复杂产品的各个部件的具体创建方法。指挥者(Director):它调用建造者对象中的部件构造与装配方法完成复杂对象的创建,在指挥者中不涉及具体产品的信息。

其结构图如下所示:

1.jpg

2. 模式的实现

(1) 产品角色:包含多个组成部件的复杂对象。

public class Product {
    private String partA;
    private String partB;
    private String partC;
    public void setPartA(String partA) {
        this.partA = partA;
    }
    public void setPartB(String partB) {
        this.partB = partB;
    }
    public void setPartC(String partC) {
        this.partC = partC;
    }
    public void show() {
        //显示产品的特性
    }
}

(2) 抽象建造者:包含创建产品各个子部件的抽象方法。

public abstract class Builder {
    //创建产品对象
    protected Product product = new Product();
    public abstract void buildPartA();
    public abstract void buildPartB();
    public abstract void buildPartC();
    //返回产品对象
    public Product getResult() {
        return product;
    }
}

(3) 具体建造者:实现了抽象建造者接口。

public class ConcreteBuilder extends Builder {
    public void buildPartA() {
        product.setPartA("建造 PartA");
    }
    public void buildPartB() {
        product.setPartA("建造 PartB");
    }
    public void buildPartC() {
        product.setPartA("建造 PartC");
    }
}

(4) 指挥者:调用建造者中的方法完成复杂对象的创建。

public class Director {
    private Builder builder;
    public Director(Builder builder) {
        this.builder = builder;
    }
    //产品构建与组装方法
    public Product construct() {
        builder.buildPartA();
        builder.buildPartB();
        builder.buildPartC();
        return builder.getResult();
    }
}

(5) 客户端

public class Client {
    public static void main(String[] args) {
        Builder builder = new ConcreteBuilder();
        Director director = new Director(builder);
        Product product = director.construct();
        product.show();
    }
}

模式的应用场景

建造者(Builder)模式创建的是复杂对象,其产品的各个部分经常面临着剧烈的变化,但将它们组合在一起的算法却相对稳定,所以它通常在以下场合使用。

创建的对象较复杂,由多个部件构成,各部件面临着复杂的变化,但构件间的建造顺序是稳定的。创建复杂对象的算法独立于该对象的组成部分以及它们的装配方式,即产品的构建过程和最终的表示是独立的。

本文来自编程界网,java教程栏目,欢迎学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

java建造者模式的特点及应用场景

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

java建造者模式的特点及应用场景

建造者模式模式的定义与特点建造者(Builder)模式的定义:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的
java建造者模式的特点及应用场景
2020-09-26

java建造者模式怎么应用

Java的建造者模式可以应用于以下情况:1. 当一个类的构造函数参数很多,且参数之间存在依赖关系时,可以使用建造者模式来简化构造函数的调用和参数的设置。通过建造者模式,可以将复杂的构造过程分解为多个简单的步骤,使得构造函数的调用和参数的设置
2023-08-31

Java适配器模式的实现及应用场景

适配器模式是Java中一种常用的设计模式,它通过将一个类的接口转换成客户端所期望的另一种接口来实现不同接口之间的兼容性。适配器模式主要应用于系统的接口不兼容、需要扩展接口功能以及需要适应不同环境的场景
2023-05-17

Java设计模式之访问者模式使用场景及代码示例

Java设计模式访问者模式模式概念访问者模式表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。访问者模式适用于数据结构相对稳定算法又易变化的系统,若系统数据结构对象易于变化,则不适合使用
2023-05-30

Java中策略设计模式的实现及应用场景

策略设计模式是Java中一种常用的设计模式,它通过定义一系列算法并将其封装成独立的策略类,从而使得算法可以在不影响客户端的情况下随时切换。策略设计模式主要应用于系统中存在多种相似的算法、需要灵活调整算法逻辑或者需要扩展新的算法等场景
2023-05-17

java单例模式的应用场景是什么

Java单例模式的应用场景是在需要保证系统中只有一个实例对象存在的情况下使用。以下是几个常见的应用场景:1. 数据库连接对象:在一个系统中,通常只需要一个数据库连接对象,使用单例模式可以确保只有一个数据库连接对象被创建和使用。2. 日志记录
2023-10-11

java设计模式的应用场景有哪些

Java设计模式有很多应用场景,以下是一些常见的应用场景:1. 工厂模式:当需要根据不同的条件创建不同的对象时,可以使用工厂模式来统一创建对象的过程,减少代码的重复。2. 单例模式:当需要确保一个类只有一个实例存在时,可以使用单例模式来实现
2023-10-08

java代理模式的应用场景是什么

Java代理模式的应用场景包括:远程代理:当客户端需要访问远程对象时,可以使用远程代理模式。远程代理可以隐藏网络通信的复杂性,让客户端感觉就像访问本地对象一样访问远程对象。虚拟代理:当创建一个对象实例非常耗费资源时,可以使用虚拟代理模式。虚
2023-10-26

精选scrapy框架的关键特点及其应用场景

精选Scrapy框架的关键特点及其应用场景异步处理:Scrapy采用异步处理机制,能够同时发送多个请求,提高爬取效率。它支持并发处理,可以并行下载多个页面,从而减少爬取时间。方便的选择器:Scrapy内置了强大的选择器,使用XPath或C
精选scrapy框架的关键特点及其应用场景
2024-01-19

Android+《火影忍者》活动启动模式以及应用场景的那些事

启动模式1.幼年鸣人偷学禁术:影分身之术 standard2.金色闪光の飞雷神之术:singleTask3.绝技·螺旋丸:singleTop4.尾兽·九尾:singleInstance 1.幼年鸣人偷学禁术:影分身之术 standard 在
2022-06-06

【Java基础教程】(二十二)Java新特性篇 · 第二讲:foreach循环——概念及优缺点、使用方式及应用场景~

Java基础教程之新特性 · foreach循环 1️⃣ 概念2️⃣ 优势和缺点3️⃣ 使用及应用场景🌾 总结 1️⃣ 概念 Java的 foreach 特性最初出现在JDK 1.5中,也被称为“增强的for
2023-08-16

PHP中的设计模式有哪些?如何应用?(PHP中常见的设计模式及其应用场景是什么?)

PHP中的设计模式,包括结构型、创建型和行为型,提供了可重复使用的解决方案,提高代码的可复用性、可维护性和灵活性。结构型模式:适配器模式、桥接模式等,用于分离接口和实现,提供松散耦合。创建型模式:抽象工厂模式、建造器模式等,用于创建和管理对象,实现对象创建的解耦。行为型模式:命令模式、观察者模式等,用于定义对象间的交互方式,实现行为的灵活性。应用场景:适配器模式可集成第三方库;桥接模式可分离抽象和实现;装饰器模式可动态添加功能;代理模式可提供间接访问;观察者模式可实现事件通知。通过合理运用设计模式,可提升
PHP中的设计模式有哪些?如何应用?(PHP中常见的设计模式及其应用场景是什么?)
2024-04-02

Java中的设计模式有哪些?请举例说明它们的应用。(请列举一些Java中常用的设计模式,并描述它们的应用场景。)

设计模式是可重复使用的软件解决方案,用于解决常见编程问题,为开发者提供最佳实践,提高代码的可读性、可维护性和可扩展性。常用Java设计模式包括:创建型模式:单例模式、工厂方法模式、抽象工厂模式结构型模式:适配器模式、代理模式、组合模式行为型模式:策略模式、观察者模式、命令模式这些模式广泛应用于企业级应用程序、GUI框架、网络通信、数据处理和测试框架等领域,帮助开发者创建可扩展、可维护和可重用的代码。
Java中的设计模式有哪些?请举例说明它们的应用。(请列举一些Java中常用的设计模式,并描述它们的应用场景。)
2024-04-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录