设计模式--建造者模式

server/2024/12/22 9:11:48/

项目源代码

应用场景

当你需要创建一个对象,而这个对象的构建过程相对复杂,并且需要进行多个步骤来完成时,建造者模式可以派上用场。举个例子,假设你正在开发一个游戏,需要创建一个角色对象。这个角色对象有很多属性,比如名字、等级、装备、技能等等,而且每个属性可能又有自己的一系列初始化步骤。使用建造者模式,你可以将角色对象的构建过程拆分成多个简单的步骤,比如设置名字、设置等级、添加装备、学习技能等,然后根据需要组合这些步骤来创建不同类型的角色对象,使得构建过程更加灵活和可控。

定义

旨在通过将复杂对象的构建过程拆分成多个简单的步骤来创建对象
出自ai

非常简单的实现


/******************************************************************************** Package: com.song.boot.springstudy.design.builder* Type:    CatBuilder* Date:    2024-04-18 10:04** Copyright (c) 2024 LTD All Rights Reserved.** You may not use this file except in compliance with the License.*******************************************************************************/
package com.song.boot.springstudy.design.builder;/*** 功能描述:** @author Songxianyang* @date 2024-04-18 10:04*/
public class CatBuilder {private String name;private Integer age;private Long id;public CatBuilder nameBuild(String name) {this.name = name;return this;}public CatBuilder ageBuild(Integer age) {this.age = age;return this;}public CatBuilder idBuild(Long id) {this.id = id;return this;}public Cat build() {// 在构建返回对象的时候  提前校验if (id == null) {id=99L;}Cat cat = new Cat(name, age, id);return cat;}
}

使用

public class Main {public static void main(String[] args) {Cat build = new CatBuilder().idBuild(111l).nameBuild("松下演员").ageBuild(12).build();System.out.println(build);}
}

在这里插入图片描述


http://www.ppmy.cn/server/7263.html

相关文章

封装原生html的table处理方法【参数类似eltable】

直接跑html即可 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>封装原生talbe</title> </…

XiaodiSec day035 Learn Note 小迪渗透学习笔记

XiaodiSec day035 Learn Note 小迪渗透学习笔记 记录得比较凌乱&#xff0c;不尽详细 day35 前言 关于 xss 入门 xss 开始 是一个前端的漏洞 数据输入输出的地方容易产生 分类: 反射性存储型DOM 型很多很多 产生过程使用<script>alert(1)</script>弹个窗 …

Android 自定义SwitchPreference

1. 为SwitchPreference 添加背景&#xff1a;custom_preference_background.xml <?xml version"1.0" encoding"utf-8"?> <selector xmlns:android"http://schemas.android.com/apk/res/android"><item><shape android:s…

java读取Excel表格数据

java读取Excel表格数据 环境说明项目结构1.controller层2.service层实现层StudentModel.java类 使用的Maven依赖效果示例一效果示例二文档截图第一页第二页 postman请求说明其他说明 环境说明 jdk1.8&#xff0c;springboot2.5.3 项目结构 1.controller层 package com.exam…

广东省道路货物运输资格证照片回执可手机线上办理

广东省道路运输资格证是从事道路运输业务、危险品道路运输人员的必要证件&#xff0c;而在办理该证件的过程中&#xff0c;驾驶员照片回执是一项必不可少的材料。随着科技的发展和移动互联网的普及&#xff0c;现在办理驾驶员照片回执已经不再需要亲自前往照相馆&#xff0c;而…

2、关于数据库事务那些事

目录 1、什么是事务&#xff1f; 2、介绍下数据库事务&#xff1f; 3、并发事务会带来什么问题&#xff1f; 3.1、不可重复读和幻读有什么区别&#xff1f; 4、数据库隔离级别有哪几种&#xff1f; 5、MySQL默认使用隔离级别是啥&#xff1f; 6、如何控制并发事务&#…

VUE - pdfmake的中文字库支持

前端VUE导出pdf。 jspdf这个插件对中文支持不够友好&#xff0c;用html的canvas转图片后还是很模糊。最终选用了pdfmake插件。 使用 1.引入pdf npm install pdfmake --save 2.页面import import pdfMake from pdfmake/build/pdfmake; import pdfFonts from pdfmake/build…

【计算机网络】 第一章-- 初步认识计算机网络

目录 网络与互联网与因特网的区别因特网服务提供者&#xff08;Internet Service Provider,ISP &#xff09;因特网标准 --- RFC因特网的组成电路交换&#xff0c;分组交换和报文交换电路交换分组交换报文交换 计算机网络的分类计算机网络的性能指标计算机网络体系结构各层的作…