Java设计模式 _创建型模式_建造者模式(Builder)

ops/2024/12/23 6:27:47/

一、建造者模式

1、建造者模式(Builder Pattern)是一种创建对象的设计模式。它允许你使用不同的构建策略来创建复杂对象。通常是在复杂类中通过静态内部类(Builder)来进行构建。

2、实现思路:
(1)、创建实体类中,私有化构造方法
(2)、定义静态内部类Builder,Builder类包含和实体类相同的属性,以及每个属性的set方法,以及build()方法去调用实体的构造。
(3)、构建实例对象时,通过静态内部类Builder进行设值在build()进行实例对象的创建。

3、优点
(1)、相对于构造方法的方式,建造者模式无需关心构造方法的参数顺序。
(2)、相对于构造方法的方式,建造者模式套路更优,无需定义更多的构造方法。
(3)、创建实例的方式隐藏在内部,不会暴漏给外部,外部无法知道创建的具体过程。
(4)、创建对象的过程是链路进行设置的,相对而言,代码更灵活和可读性更好。
(5)、相对于new对象,在逐个set赋值的方式。建造者模式是先set,在new的过程。建造者可以确定对象一定存在,而前者可能存在构建失败造成空指针的问题等。

二、代码示例

代码示例:

java">public class Computer {private String cpu;private String gpu;private String ram;private String storage;private Computer(Builder builder) {this.cpu = builder.cpu;this.gpu = builder.gpu;this.ram = builder.ram;this.storage = builder.storage;}@Overridepublic String toString() {return "Computer{" + "cpu='" + cpu + '\'' + ", gpu='" + gpu + '\'' + ", ram='" + ram + '\'' +  ", storage='" + storage + '\'' +  '}';}public static class Builder {private String cpu;private String gpu;private String ram;private String storage;public Builder setCpu(String cpu) {this.cpu = cpu;return this;}public Builder setGpu(String gpu) {this.gpu = gpu;return this;}public Builder setRam(String ram) {this.ram = ram;return this;}public Builder setStorage(String storage) {this.storage = storage;return this;}public Computer build() {return new Computer(this);}}public static void main(String[] args) {Computer computer = new Computer.Builder().setCpu("CPU-i7").setGpu("GPU-3080").setRam("16GB").setStorage("1TB").build();System.out.println(computer);computer = new Computer.Builder().setCpu("CPU-i11").setGpu("GPU-9090").setRam("32GB").setStorage("2TB").build();System.out.println(computer);}
}

如上的代码示例中,在静态内部类Builder中,每一个set方法中通过return this,实现了设备值的同时,返回房前Builder对象,可以继续调用set方法,进而实现了链路设置的方式。

学海无涯苦作舟!!!


http://www.ppmy.cn/ops/19212.html

相关文章

8086:qemu执行汇编

正文 环境:macOS M1。 QEMU(Quick EMUlator)是一个开源的虚拟机监视器,可以模拟多种硬件平台,包括处理器架构、设备和操作系统。QEMU具有以下主要功能和用途: 硬件模拟器:QEMU可以模拟多种处理…

PDF 书签制作与调整 从可编辑、不可编辑 PDF 文档创建书签的方法

本文是对以前发表的旧文拆分,因为原文主题太多,过长,特另起一篇分述。 第一部分 由可编辑 PDF 文档创建书签 方法 1. Adobe Acrobat Pro autobookmark AutoBookmark 是一个可用于 Adobe Acrobat 自动生成书签的插件。 官方下载地址&…

机器学习-线性回归普通最小二乘法运用的经典基本假设有哪些?

在线性回归中,普通最小二乘法(Ordinary Least Squares,OLS)是一种常用的参数估计方法。它基于一些经典的基本假设,包括以下几个方面: 线性关系:OLS假设因变量(被解释变量&#xff0…

Docker基础学习(5.Docker镜像命令)

⭐ 作者简介:码上言 ⭐ 代表教程:Spring Boot vue-element 开发个人博客项目实战教程 ⭐专栏内容:个人博客系统 ⭐我的文档网站:http://xyhwh-nav.cn/ ⭐微信公众号:码上言 文章目录 Docker run流程镜像是什么&a…

ISP比普通的静态代理相比有什么优势?

ISP(Internet Service Provider),即互联网服务提供商,是向广大用户综合提供互联网接入业务、信息业务、增值业务的电信运营商。而静态代理则是一个固定不变的代理IP地址,具有稳定性强、兼容性好和管理方便等特点。当我…

【Websokect】服务器https协议下ws连接失败问题及解决办法

在服务器使用HTTPS协议下连接WebSocket时,通常会出现一些常见的问题导致连接失败。以下是一些可能的原因和解决办法: SSL证书配置问题: 确保您的服务器上已正确配置SSL证书,并且证书有效。如果证书配置不正确或者过期,…

算法06链表

算法06链表 一、链表概述1.1概述1.2链表的组成部分:1.3链表的优缺点: 二、链表典例力扣707.设计链表难点分析:(1)MyLinkedList成员变量的确定:(2)初始化自定义链表:&…