简单理解常用设计模式(九)建造者模式(例如通过第三者生成人物)

大模型生成人物关系思维导图的实战教程 本文主要介绍了大模型生成人物关系思维导图的实战教程,希望对使用大语言模型的同学们有所帮助。 文章目录 1. 前言 2. 实战教程 阅读详情

这里记录一个比较常用的模式,建造者模式,主要是应用于:当创建复杂对象的算法应该独立于该对象的组成部分,以及它们的装配方式时适用。

建造者模式:将一个复杂对象的构建,于它的表示分离,使得同样的构建过程可以创建不同的表示。

这里应用原书的场景,调用方生成一个人物形象,不应该让调用方来决定每个细节,比如胖身体,大头等,应该给调用方提供一个整体方案如胖子人物,瘦子人物。

原书UML如下:


调用类如下:

package com.gcc.builderModel;
/**
 * 建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建可以创建不同的表示。
 * 使用户不必知道建造细节,只需指定建造结果。
 * 实现接口,同时防止建造细节的遗漏
 *
 */
public class TestBuilder {

	public static void main(String[] args) {
		PersionBuilder pa = new PersionA();
		PersionBuilder pb = new PersionB();
		new DirectPersion(pa).createPersion();
		new DirectPersion(pb).createPersion();
	}
	
}

接口如下:

package com.gcc.builderModel;

public interface PersionBuilder {

	void head();
	void body();
	void leftHand();
	void rightHand();
	void leftFoot();
	void rightFoot();
	
}

人物A如下:

package com.gcc.builderModel;

public class PersionA implements PersionBuilder {

	@Override
	public void head() {
		System.out.print("大头");
	}

	@Override
	public void body() {
		System.out.print("胖身体");
	}

	@Override
	public void leftHand() {
		System.out.print("胖左手");
	}

	@Override
	public void rightHand() {
		System.out.print("胖右手");
	}

	@Override
	public void leftFoot() {
		System.out.print("胖左脚");
	}

	@Override
	public void rightFoot() {
		System.out.println("胖右脚");
	}

}

人物B如下:

package com.gcc.builderModel;

public class PersionB implements PersionBuilder {

	@Override
	public void head() {
		System.out.print("小头");
	}

	@Override
	public void body() {
		System.out.print("瘦身体");
	}

	@Override
	public void leftHand() {
		System.out.print("瘦左手");
	}

	@Override
	public void rightHand() {
		System.out.print("瘦右手");
	}

	@Override
	public void leftFoot() {
		System.out.print("瘦左脚");
	}

	@Override
	public void rightFoot() {
		System.out.print("瘦右脚");
	}

}

指挥者类如下:

package com.gcc.builderModel;

/**
 * 指挥者,用来隔离用户和具体的实现过程
 *
 */
public class DirectPersion {

	PersionBuilder builder;

	public DirectPersion(PersionBuilder builder) {
		this.builder = builder;
	}
	
	public void createPersion(){
		builder.head();
		builder.body();
		builder.leftHand();
		builder.rightHand();
		builder.leftFoot();
		builder.rightFoot();
	}
	
}

咳咳,才发现demo的person拼写错了,大家见谅。

还有对于指挥者类的修改,如果需要添加的功能(方法)是公共的,比如耳朵,眼睛则可以添加,否则就不应该添加。

指挥者(建造者)类隐藏了一个人物(产品)是如何组装的过程,如果要修改组装,修改指挥者类的调用即可


C#上位机多PLC多协议开发思路:10年老工控师拆解实战方案,避坑90%的问题(附代码框架) 是否连接成功数据地址(如“DB1.DBW0”“D100”“4x0001”) 阅读详情

相关推荐

基于AIS动态数据与AI结合得经纬度标示算法

港口船舶智能标注系统 本系统通过结合摄像头视频流和AIS船舶动态数据,利用AI技术实现船舶实时标注功能。系统架构包括视频流处理、AIS数据解析、船舶检测匹配和坐标映射转换等模块。关键技术步骤: AIS数据获取:通过本地接收机或网络API获取船舶位置、航速等信息 AI目标检测:采用YOLOv8等模型识别视频中的船舶 船舶匹配算法:通过位置投影或运动轨迹匹配视频目标与AIS数据 坐标映射:使用相机标定技术将经纬度转换为图像坐标 实时标注:在视频画面上叠加船名、位置等关键信息 应用场景包括港口监控、智能海事管理和

qianbo042311的博客 1808

java+设计人物,Java设计模式—观察者(Observer)详解

观察者模式的定义:观察者模式定义了一种一对多的依赖关系,被观察者一般称为主题,一个主题对象会有多个观察者,一旦主题更新了信息,就会推送到各个观察者处。举一个生活中常见的例子: 3个人(观察者)都想买房(主题对象),于是他们都订阅了某楼盘的房价信息,一旦楼盘的房价变动,这3个人都会受到最新的房价。这就是观察者模式的作用。其实Java中,已经内置有实现观察者模式的api。但我们先来自己实现观察者模式。...

weixin_35452206的博客 178

camera——HAL层知识分享

CameraHAL层是Android相机系统的核心中间层,负责连接Framework层与硬件驱动层。它通过标准化接口解耦软硬件,实现跨平台兼容性,同时为厂商提供硬件定制空间。主要功能包括:设备管理、数据流处理、参数控制以及图像优化。关键子系统涵盖预览、拍照、录像、对焦与曝光等模块,采用HAL3的"请求-响应"模型实现精细控制。性能优化重点关注启动时间、帧率稳定性和延迟控制。通过分层架构设计(接口层-核心层-适配层)和缓冲池机制,确保高效数据传输和硬件资源调度。

2302_77429403的博客 2074

设计模式JAVA-建造者模式(六)

文章目录1.建造者模式1.1 场景1.2 建造者模式1.3 java.lang.StringBuilder 中的建造者模式1.4 建造者模式的注意事项和细节 1.建造者模式 1.1 场景 盖房项目需求 需要建房子:这一过程为打桩、砌墙、封顶 房子有各种各样的,比如普通房,高楼,别墅,各种房子的过程虽然一样,但是要求不要相同的. 请编写程序,完成需求. 传统方式的问题分析 优点是比较好...

有点想法的专栏 395

PCB中的CAF深度剖析与对策研究

摘要:本文系统研究了PCB板的导电阳极丝(CAF)问题,阐明了CAF是在电场作用下铜离子沿玻纤微裂通道迁移形成导电丝的现象,其形成需铜、水汽、电解质、偏压和迁移通道五个条件。CAF会导致PCB绝缘性能下降和信号传输异常,严重影响电子产品可靠性。研究提出了板材选择、钻孔工艺控制、叠板结构优化等预防措施,以及增大孔距、错位排列等设计注意事项,并介绍了IPC-TM-650-2.6.25测试标准。未来应在耐CAF材料、测试技术和制造工艺方面深入研究,以提升PCB可靠性。(150字)

2401_84691632的博客 1704

管好 SAP Fiori Launchpad Content:技术目录、业务目录与 KPI 工具的完整治理思路

SAP Fiori Launchpad 作为企业级统一入口,需通过技术目录(源对象)和业务目录(引用编排)分层治理。技术目录由 Launchpad App Manager 维护,负责应用描述对象(Tile 和 Target Mapping)的创建与管理;业务目录由 Launchpad Content Manager 编排,通过引用技术目录对象实现灵活配置。分析型内容则通过 F2814 统一管理。这种分层设计支持应用复用,便于升级维护,是 SAP S/4HANA 项目中实现高效内容治理的关键。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 132

C#设计模式之建造者模式

建造者模式 文章目录建造者模式模式分类模式产生的原因模式灵感的来源模式类图经典代码实现建造者模式的优化Director省略钩子方法引入建造者模式的总结建造者模式的优点:建造者模式的缺点: 本篇博客将介绍建造者模式,建造者模式是一种比较复杂的创建型设计模式,建造者模式相比较于工厂模式,建造者模式更加关注于一个对象的组装过程,通常建造者模式适用于复杂对象的创建,且常常会和工厂模式联动使用。 模式分类 创建型设计模式。 模式产生的原因 在实际的软件开发中会有一种复杂的对象需求,复杂对象一般指的是利用组合复用原则将

BraveRunTo的博客 1013

RT-DETR改进策略【模型轻量化】| 替换骨干网络为EfficientNet v1 高效的移动倒置瓶颈结构

本文记录的是基于。采用了创新性的方法,通过精心平衡网络和来提升性能。本文将的设计优势融入RT-DETR中,提升RT-DETR的性能与效率,使其在目标检测任务中表现更为出色。本文配置了原模型中的共种不同大小的模型结构,以满足不同的需求。

Limiiiing的博客 533

设计模式六(建造者模式)

一、什么是建造者模式 建造者模式:是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,所谓复合对象就是指某个类具有不同的属性,其实建造者模式就是前面抽象工厂模式和最后的Test结合起来得到的。 建造者模式通常包括下面几个角色: 1、Builder:给出一个抽象接口,以规范产品对象的各个组成成分的建造。这个接口规定要实现复杂对象的哪些部分的创建,并不涉及具体的对象部件的创建。 2、Co

二十一克阳光!的博客 287

Agent应用实践之三十六 - AgentScope高阶用法:AG-UI

AI 大模型飞速进化,不懂 AI、不会用 Agent 的程序员,正在慢慢被行业淘汰。现在 AI 新技术迭代快到离谱:RAG 还没学明白,MCP 接踵而来;工具刚上手,Skills、各类新 Agent 概念又轮番刷屏;Manus还没看懂,就出来OpenClaw,OpenClaw热度还没退,又出来Hermes。越追越乱、越学越焦虑,永远在被动跟风,陷入学不完、跟不上、用不上的内耗。其实焦虑的根本原因,不是新技术太多,而是不懂大模型 Agent 应用底层原理,只会零散跟风,没有通用方法论。为此我专门推出Agent

代码让AI扣 139

QCC51XX---人机接口设备协议( HID)

QCC51XX---人机接口设备协议( HID)

weixin_42162924的博客 819

java设计模式之建造者模式

java设计模式之建造者模式 一、什么是建造者模式 建造者模式:是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,所谓复合对象就是指某个类具有不同的属性,其实建造者模式就是前面抽象工厂模式和最后的Test结合起来得到的。 建造者模式通常包括下面几个角色: 1、Build...

太阳晒屁股了的博客 182

Vue Print Designer——一款让打印模板的设计变简单的可视化打印设计器

Vue Print Designer——一款让打印模板的设计变简单的可视化打印设计器

bjzhang75的博客 685

设计模式——生成器模式(建造者模式)

学习不是一朝一夕,现在才刚刚开始,共勉。

bilibiliccc的博客 1589

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java设计模式之建造者模式

一、什么是建造者模式 建造者模式:是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,所谓复合对象就是指某个类具有不同的属性,其实建造者模式就是前面抽象工厂模式和最后的Test结合起来得到的。 建造者模式通常包括下面几个角色: 1、Builder:给出一个抽象接口,以规范产...

月光秦城 161

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

java建造者模式理解_理解java设计模式之建造者模式

建造者模式(Builder Pattern)主要用于“分步骤构建一个复杂的对象”,在这其中“分步骤”是一个稳定的算法,而复杂对象的各个部分则经常变化。因此, 建造者模式主要用来解决“对象部分”的需求变化。 这样可以对对象构造的过程进行更加精细的控制。package com.shejimoshi.create.Builder;/*** 功能:意图是将一个复杂对象的构建与它的表示分离,使得同样的构建过...

weixin_39553458的博客 81

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

java建造者模式理解_java_理解java设计模式之建造者模式,建造者模式(Builder Pattern)主要 - phpStudy...

理解java设计模式之建造者模式建造者模式(Builder Pattern)主要用于“分步骤构建一个复杂的对象”,在这其中“分步骤”是一个稳定的算法,而复杂对象的各个部分则经常变化。因此, 建造者模式主要用来解决“对象部分”的需求变化。 这样可以对对象构造的过程进行更加精细的控制。package com.shejimoshi.create.Builder;/*** 功能:意图是将一个复杂对象的构建...

weixin_29870587的博客 154

PSI-release:生成无人物场景中的3D人物

PSI-release:生成无人物场景中的3D人物 项目介绍 People-Scene Interaction(PSI)是一个专注于人物与场景交互建模的开源项目。其主要功能是从无人物场景中生成3D人物,为虚拟现实、游戏设计、计算机视觉等领域提供了一种创新的解决方案。 项目技术分析 PSI项目采用了一系列先进的技术,包括SMPL-X模型、VPoser以及深度学习算法。SMPL-X是一种高级的人体建模...

gitblog_00951的博客 715

创建型设计模式----建造者模式

目录简介模式结构举个栗子优缺点适用场景 简介 建造者模式:将一个复杂对象的构建和表示分离,使得同样的构造过程可以创建不同的表示。 说明:对象构建型模式就是一步步创建一个复杂的对象,用户只需要指定一个复杂对象的类型就可以构建它们,不需要知道具体的内部细节。比如汽车,用户只需要指定汽车的类型(如面包车)就可以得到了,不需要知道车的轮子,发动机这些是怎么制造安装的。 模式结构 说明一下具体成分: Bu...

machine_Heaven的博客 509

建造者模式和模板设计模式应该怎么使用

建造者和模板设计模式在代码中的运用

eck_燃的博客 279

JAVA23种设计模式——建造者模式

本文主要讲一下建造者模式,因为其和工厂模式都是封装细节,只提供最终的成品,所以讲完建造者模式,再讲一下两种模式之间的异同,以及在什么环境下使用什么样的模式。 如果对工厂模式还不了解可以先看这篇文章:JAVA23种设计模式——工厂模式 一、建造者模式 建造者模式分三块内容(还是拿产品举例): 产品本身(实体类) 构建产品的标准(接口)和使用标准生产产品的车间(接口的实现类,具体生产什么产品每个车...

free_journey的博客 283

设计模式之建造者模式(二)

建造者模式是一种创建型设计模式,它可以将复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。什么是构建和表示,什么是构建表示分离呢?

李赛男 1233

设计模式总结四(外观模式、建造者模式、观察者模式和抽象工厂模式)

序 这么多天里,我已经读完了《大话设计模式》。放寒假了,没有了通过学业考试的重担,阅读技术书籍的时间页多出来了不少。 在今天我刚阅读了《kafka权威指南》的第一章,关于介绍kafka这个消息发布与订阅系统的概念。在之前的一份实习中,我曾经接触到了kafka,但是我一知半解,也没有深入的了解为什么会有kafka的存在。恰巧前几天我在市图书馆看到一本名为《kafka权威指南》的书,于是就看了一小会。回来的时候意犹未竟,但也没有借回来,于是从网上找了本电子书继续学习。 好了,现在切入正题,先总结外观模式。

My Struggle 3655

java设计模式 建造模式_理解java设计模式之建造者模式

理解java设计模式之建造者模式发布于 2020-12-10|复制链接摘记: 建造者模式(Builder Pattern)主要用于“分步骤构建一个复杂的对象”,在这其中“分步骤”是一个稳定的算法,而复杂对象的各个部分则经常变化。因此, 建造者模式主要用来解决“对象部分”的需求变化。 这样可以对对象构造的过程进行更加精细的控制。```javapackage com.shejimoshi.create...

weixin_39908588的博客 115

23种设计模式的简单理解

23种设计模式的设计原则为: 1、开闭原则 2、单一职责原则 3、依赖倒置原则 4、里氏替换原则 5、迪米特原则(最小知道原则) 6、组合复用原则 23种设计模式可分为三种大的类型 一、创建型 1、工厂模式(Factory): 分为简单工厂模式和工厂方法模式。 简单工厂模式也称为静态工厂模式,一般是用类的静态方法实现的,涉及角色有简单工厂,抽象产品,具体产品。个人的简单理解:向静态方法传不...

Kevin的技术随笔 514

PyTorch 生成动漫人物头像 CGAN(李宏毅)

一、GAN简介 GAN由生成器(Generator)和判别器(Discriminator)组成,生成器负责生成假的图片来骗过判别器,而判别器需要不断从真实图片上学习特征来提高自己的判别能力。 GAN本质是一个博弈的过程,首先生成器G将输入的随机噪声通过神经网络生成一张图,判别网络D会对G生成的假图进行打分(分值越接近0表示图片越假,越接近1表示图片越真),从而引导G生成更真的图(既然判别器D要引导生成器G变得更好,那么D的判别能力起到至关重要的作用,因此判别器D也在不断学...

qq_57886603的博客 8337
上一篇: 简单理解常用设计模式(八)外观模式(例如客户、基金、用户)
下一篇: 简单理解常用设计模式(十)观察者模式
gcc_front
博客等级 码龄9年 16粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值