当前位置: 首页 > article >正文

4 生成器模式

生成器模式的核心是将一个复杂对象的构建与它的表示分离使得同样的构建过程可以创建不同的表示。简单说像搭积木一样用相同的步骤可以搭出不同样式的房子。建造房子的步骤是固定的打地基建墙体安装屋顶装修内部但根据不同的需求可以建出不同样式的房子经济房普通地基 砖墙 瓦片屋顶 简单装修豪华别墅深地基 钢筋混凝土墙 琉璃瓦屋顶 豪华装修生成器模式就是让同一个建造过程产出不同样式的产品。1.Product产品要构建的复杂对象由多个部件组成。2.Builder生成器接口定义构建各部件的方法BuildPart()方法3.ConcreteBuilder具体生成器实现Builder接口具体构建逻辑和产品组装4.Director指挥者控制构建流程5.Client客户端创建Director和Builder获取最终产品import java.util.*; public class Client{ public static void main (String[] args) { Director director new Director(); Builder builder1 new Builder1(); director.Construct(builder1); Product product1 builder1.getResult(); product1.info(); Builder builder2 new Builder2(); director.Construct(builder2); Product product2 builder2.getResult(); product2.info(); } } // 产品 class Product{ ListString parts new ArrayListString(); public void Add(String part){ parts.add(part); } public void info(){ System.out.print(产品的组成:); for(String s: parts) System.out.print(s ); System.out.print(\n); } } // 生成器接口Builder abstract class Builder{ public abstract void BuildPart(); public abstract Product getResult(); } // 具体的生成器Builder1、Builder2 class Builder1 extends Builder{ Product product new Product(); Override public void BuildPart(){ product.Add(A); product.Add(B); product.Add(C); } Override public Product getResult(){ return product; } } class Builder2 extends Builder{ Product product new Product(); Override public void BuildPart(){ product.Add(B); product.Add(C); product.Add(E); } Override public Product getResult(){ return product; } } // 指挥者 class Director{ public void Construct(Builder builder){ builder.BuildPart(); } }

相关文章:

4 生成器模式

生成器模式 的核心是:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。简单说:像搭积木一样,用相同的步骤可以搭出不同样式的房子。建造房子的步骤是固定的:打地基建墙体安装屋顶装修内部但…...

Modbus RTU 与 Modbus TCP 深入指南-结束语

结束语本指南涵盖了Modbus RTU和Modbus TCP的物理层、数据链路层、报文格式、CRC算法、通信模型、功能码详解、性能优化、安全加固、故障排查、工程实践、过渡策略及现代替代方案。核心要点回顾:RTU:串口,远距离,简单可靠&#xf…...

2026年6分钟腾讯云部署OpenClaw/Hermes Agent及使用喂饭级步骤流程

2026年6分钟腾讯云部署OpenClaw/Hermes Agent及使用喂饭级步骤流程。OpenClaw是开源的个人AI助手,Hermes Agent则是一个能自我进化的AI智能体框架。阿里云提供计算巢、轻量服务器及无影云电脑三种部署OpenClaw 与 Hermes Agent的方案、百炼Token Plan兼容主流 AI 工…...

Modbus RTU 与 Modbus TCP 深入指南-附录:快速参考表

十五、附录:快速参考表 15.1 Modbus RTU 帧示例速查 操作请求帧(十六进制)响应帧示例读线圈(1个)01 01 00 00 00 01 CRC01 01 01 01 CRC读离散输入01 02 00 00 00 01 CRC01 02 01 00 CRC读保持寄存器(1个…...

深度重构黑苹果系统架构:OpenCore实战解析与性能优化

深度重构黑苹果系统架构:OpenCore实战解析与性能优化 【免费下载链接】Hackintosh 国光的黑苹果安装教程:手把手教你配置 OpenCore 项目地址: https://gitcode.com/gh_mirrors/hac/Hackintosh 在传统PC硬件与macOS系统兼容性的技术探索中&#xf…...

通过用量看板与透明账单有效控制大模型 API 调用成本

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过用量看板与透明账单有效控制大模型 API 调用成本 对于依赖大模型 API 进行开发的团队而言,成本控制是一个贯穿始终…...

Active Record Doctor与多数据库支持:MySQL、PostgreSQL、SQLite兼容性详解

Active Record Doctor与多数据库支持:MySQL、PostgreSQL、SQLite兼容性详解 【免费下载链接】active_record_doctor Identify database issues before they hit production. 项目地址: https://gitcode.com/gh_mirrors/ac/active_record_doctor Active Recor…...

从Packet Tracer到EVE-NG:网络小白进阶实战,手把手教你用VMware部署第一个思科拓扑

从Packet Tracer到EVE-NG:网络工程师的虚拟化进阶指南 当你已经能够熟练使用Cisco Packet Tracer完成CCNA级别的实验,却发现这个教学工具无法满足你对真实网络环境模拟的渴望时,是时候考虑升级你的网络实验平台了。EVE-NG作为当前最强大的网…...

VMware Workstation Pro 17免费激活实战:5分钟解锁专业虚拟化

VMware Workstation Pro 17免费激活实战:5分钟解锁专业虚拟化 【免费下载链接】VMware-Workstation-Pro-17-Licence-Keys Free VMware Workstation Pro 17 full license keys. Weve meticulously organized thousands of keys, catering to all major versions of V…...

Foundation Sites响应式设计原理:5个核心断点系统详解,打造完美移动优先体验

Foundation Sites响应式设计原理:5个核心断点系统详解,打造完美移动优先体验 【免费下载链接】foundation-sites The most advanced responsive front-end framework in the world. Quickly create prototypes and production code for sites that work …...

ZeroAPI:基于订阅与任务感知的AI模型智能路由插件设计与实践

1. 项目概述:ZeroAPI,一个为AI订阅服务而生的智能路由插件如果你和我一样,手头订阅了不止一个AI服务——比如OpenAI的ChatGPT Plus、月之暗面的Kimi、智谱AI的GLM,可能还有MiniMax或者通义千问——那你一定遇到过这个烦恼&#xf…...

基于MCP协议构建Jira Tempo工时管理AI助手:从原理到实践

1. 项目概述:一个专为Jira Tempo设计的MCP服务器 如果你和我一样,每天都要在Jira里手动填写Tempo工时,然后对着那些重复的、琐碎的操作感到厌倦,那么这个项目可能就是你的“救星”。 ivelin-web/tempo-mcp-server 是一个基于Mo…...

Sketch Find and Replace插件终极指南:如何快速批量替换设计文本

Sketch Find and Replace插件终极指南:如何快速批量替换设计文本 【免费下载链接】Sketch-Find-And-Replace Sketch plugin to do a find and replace on text within layers 项目地址: https://gitcode.com/gh_mirrors/sk/Sketch-Find-And-Replace 你是否曾…...

龙为权,凰为心:凰标守住文化最柔软的底线@凤凰标志

龙为权凰为心 中国文艺生态的双轨平衡宣言秩序权力与创作初心,一刚一柔, 如日月轮值,缺一不可。 龙标掌「权」,凰标守「心」, 双轨并行,方可让文化既筋骨强健,又血肉温润。一、龙标:…...

物理网卡down了?虚拟机还能通信吗?看teaming策略就够了

在ESXi虚拟化运维中,物理网卡(vmnic)故障、网线松动、网卡损坏导致网卡down(宕机),是常见的硬件故障场景。很多新手遇到这种情况,会下意识认为所有虚拟机都会断网,但实际并非如此。核…...

AJV布尔验证终极指南:掌握JSON Schema中最简单的数据类型处理技巧

AJV布尔验证终极指南:掌握JSON Schema中最简单的数据类型处理技巧 【免费下载链接】ajv The fastest JSON schema Validator. Supports JSON Schema draft-04/06/07/2019-09/2020-12 and JSON Type Definition (RFC8927) 项目地址: https://gitcode.com/gh_mirror…...

Unity3D游戏马赛克清除终极指南:7种高效技术深度解析

Unity3D游戏马赛克清除终极指南:7种高效技术深度解析 【免费下载链接】UniversalUnityDemosaics A collection of universal demosaic BepInEx plugins for games made in Unity3D engine 项目地址: https://gitcode.com/gh_mirrors/un/UniversalUnityDemosaics …...

Unity游戏马赛克移除终极指南:如何轻松解锁隐藏内容?

Unity游戏马赛克移除终极指南:如何轻松解锁隐藏内容? 【免费下载链接】UniversalUnityDemosaics A collection of universal demosaic BepInEx plugins for games made in Unity3D engine 项目地址: https://gitcode.com/gh_mirrors/un/UniversalUnity…...

UniversalUnityDemosaics:Unity游戏马赛克去除全攻略

UniversalUnityDemosaics:Unity游戏马赛克去除全攻略 【免费下载链接】UniversalUnityDemosaics A collection of universal demosaic BepInEx plugins for games made in Unity3D engine 项目地址: https://gitcode.com/gh_mirrors/un/UniversalUnityDemosaics …...

为AI智能体构建持久化记忆系统:基于RAG与向量检索的实践

1. 项目概述:为AI智能体构建持久化记忆系统在AI智能体(AI Agent)的开发浪潮中,一个核心的痛点日益凸显:如何让智能体拥有持续、可靠的记忆能力?无论是基于Claude API、GPTs还是其他大语言模型构建的对话机器…...

神经进化算法实战:从零构建AI Flappy Bird游戏智能体

1. 项目概述:当AI学会玩像素小鸟如果你玩过那个让人又爱又恨的《Flappy Bird》,一定对那只在绿色水管间反复横跳的小鸟记忆犹新。但你想过吗,如果让一群“数字小鸟”自己学会玩这个游戏,会是什么景象?这正是“AI Flapp…...

告别混乱XML:Notepad++插件一键美化与智能纠错实战

1. 为什么我们需要XML格式化工具? 作为一个常年和XML打交道的开发者,我太清楚那种打开一个几千行XML文件时的绝望了——所有标签挤在一起,缩进混乱得像被猫抓过的毛线球,想找个节点得用CtrlF来回搜三遍。更可怕的是,有…...

XUnity.AutoTranslator终极指南:5分钟破解Unity游戏语言障碍

XUnity.AutoTranslator终极指南:5分钟破解Unity游戏语言障碍 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 当你打开心爱的日系RPG游戏,却因为语言不通而无法理解剧情时&#xff…...

别再只用欧氏距离了!用Python手写曼哈顿距离,搞定KNN和聚类中的特征选择难题

曼哈顿距离实战:用Python优化KNN与聚类算法特征选择 在机器学习项目中,我们常常默认使用欧氏距离作为度量标准,却忽略了其他距离函数的独特价值。曼哈顿距离(Manhattan Distance)作为L1范数的典型代表,在处…...

从单场到多场并发:知识竞赛平台的弹性扩展能力

🚀 从单场到多场并发:知识竞赛平台的弹性扩展能力动态调度 平滑扩容 稳定支撑📌 演进中的需求:从单一活动到复杂场景传统的知识竞赛活动往往以单场、线下或小规模在线形式进行,对技术平台的压力相对有限。然而&#…...

别再傻傻分不清了!舵机、步进、无刷、永磁同步,这四种电机到底怎么选?

机器人开发者必读:四大电机选型实战指南 当你在深夜调试机器人关节时,是否曾被电机的异常啸叫声惊醒?三年前我参与四足机器人项目时,就因选错电机类型导致整机功耗超标。本文将用真实项目经验,帮你避开电机选型的那些坑…...

知识竞赛软件高可用架构解析:主备切换与故障自愈如何保障业务连续

🏗️ 知识竞赛软件的高可用架构主备切换与故障自愈之道📌 引言在数字化竞赛时代,一场线上知识竞赛的参与者可能遍布全国,任何系统中断都可能导致活动失败、体验受损。因此,构建一个具备高可用性的知识竞赛平台&#xf…...

2026终极指南:如何一键重置JetBrains IDE试用期,享受无限期免费开发体验

2026终极指南:如何一键重置JetBrains IDE试用期,享受无限期免费开发体验 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 你是否曾因JetBrains IDE试用期到期而中断开发工作?每次…...

保姆级教程:用GATK4从玉米B73参考基因组中提取SNP和Indel(附完整代码)

玉米基因组变异检测实战指南:从测序数据到SNP/Indel分析全流程 在植物遗传学研究领域,玉米作为重要的模式作物和粮食作物,其基因组变异分析对品种改良和功能基因挖掘具有重要意义。本文将带领生物信息学初学者逐步完成从原始测序数据到变异检…...

Tailark部署指南:从开发到生产环境的完整流程

Tailark部署指南:从开发到生产环境的完整流程 【免费下载链接】cnblocks Shadcn marketing blocks 项目地址: https://gitcode.com/gh_mirrors/cn/cnblocks Tailark是一个专为现代营销网站打造的响应式组件库,基于shadcn/ui、Tailwind CSS和Next.…...