建造者模式__c#
目录
调用
指挥者
抽象建造者
建造者
定义具体产品
调用
用指挥者指挥建造者建造产品
在指挥者这里组装成产品
namespace _建造者模式
{internal class Program{static void Main(string[] args){Builder builder=new JiangHuaiBuilder();//建造者Director director =new Director(builder);//指挥者ProductCar car = director.Construct();//指挥者指挥建造产品}}
}
指挥者
可以指挥建造者用哪几个部件建造产品,指挥组成具体产品
可以定义多个建造者
namespace _建造者模式
{/// <summary>/// 指挥者/// </summary>public class Director{private Builder _builder;//建造者引用//通过构造函数传入具体建造者public Director(Builder builder){_builder = builder;}//构建方法1-自动挡(没有离合器)public ProductCar Construct(){_builder.BuildEngine_A();_builder.BuildGearBox_B();_builder.BuildSteeringWheel_D();_builder.BuildThrottle_E();Console.WriteLine("构建自动挡汽车");return _builder.GetBuildResult();}}
}
抽象建造者
可以有多个,声明要建造的产品用什么组成
namespace _建造者模式
{/// <summary>/// 抽象建造者/// </summary>public abstract class Builder{public ProductCar Car { get; set; }//产品引用public abstract void BuildEngine_A();//建造汽车引擎public abstract void BuildGearBox_B();//建造变速箱public abstract void BuildClutch_C();//建造离合器public abstract void BuildSteeringWheel_D();//建造汽车方向盘public abstract void BuildThrottle_E();//建造加速器public abstract ProductCar GetBuildResult();//返回建造的结果(产品)}
}
建造者
实现组成产品的具体部件
namespace _建造者模式
{/// <summary>/// 具体建造者A-江淮汽车/// </summary>public class JiangHuaiBuilder : Builder{public JiangHuaiBuilder(){Car = new ProductCar();}public override void BuildClutch_C(){Car.Clutch_C = "江淮离合器";Console.WriteLine("建造江淮离合器");}public override void BuildEngine_A(){Car.Engine_A = "江淮引擎";Console.WriteLine("建造江淮引擎");}public override void BuildGearBox_B(){Car.GearBox_B = "江淮变速器";Console.WriteLine("建造江淮变速器");}public override void BuildSteeringWheel_D(){Car.SteeringWheel_D = "江淮方向盘";Console.WriteLine("建造江淮方向盘");}public override void BuildThrottle_E(){Car.Throttle_E = "江淮加速器";Console.WriteLine("建造江淮加速器");}public override ProductCar GetBuildResult(){Console.WriteLine("构建产品成功");//返回建造的结果return Car;}}
}
定义具体产品
namespace _建造者模式
{/// <summary>
/// 定义产品
/// </summary>public class ProductCar{public string Engine_A { get; set; }//发动机public string GearBox_B { get; set; }//变速箱public string Clutch_C { get; set; }//离合器public string SteeringWheel_D { get; set; }//方向盘public string Throttle_E { get; set; }}
}
相关文章:
建造者模式__c#
目录 调用 指挥者 抽象建造者 建造者 定义具体产品 调用 用指挥者指挥建造者建造产品 在指挥者这里组装成产品 namespace _建造者模式 {internal class Program{static void Main(string[] args){Builder buildernew JiangHuaiBuilder();//建造者Director director new…...

学习MRI处理过程中搜到的宝藏网站
今天浏览网页查到了一些宝藏网站,正好记录一下,后面搜到好东东再接着填充,方便查阅~ (1)牛人网站 这个网站是在搜集seed关键词时发现的,用pdf文档记录,可下载查阅,条理清晰…...
【C语言】const char*强制类型转换 (type cast)的告警问题
void run_upload(const char *ftp_url) {CircularQueue queue;// 初始化环形队列for (int i = 0; i < QUEUE_SIZE; i++) {queue.items[i].data = malloc(BUFFER_SIZE);if (queue.items[i].data == NULL) {fprintf(stderr, "Failed to allocate memory for queue item %…...

python-比较月亮大小/数组下标/人见人爱a+b
一:比较月亮大小 题目描述 小理是一名出色的狼人。众所周知,狼人只有在满月之夜才会变成狼。 同时,月亮的大小随着时间变化,它的大小变化 3030 天为一循环。 它的变化情况(从第一天开始)为 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,13,12,1…...

什么是组态、组态的应用场景介绍
随着计算机技术和工业自动化水平迅速提高,而车间现场种类繁杂的控制设备和过程监控装置使得传统的工业控制软件无法满足用户的各种需求。在“组态”概念出现之前,工程技术人员需要通过编写程序来实现某一任务,不但工作量大、周期长࿰…...

Java项目: 基于SpringBoot+mybatis+maven实现的智能推荐卫生健康系统分前后台(含源码+数据库+开题报告+任务书+毕业论文)
一、项目简介 本项目是一套基于SpringBootmybatismaven实现的智能推荐卫生健康系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美…...

本地生活商城开发搭建 同城O2O线上线下推广
同城本地化商城目前如火如荼,不少朋友咨询本地生活同城平台怎么开发,今天商淘云与大家分享同城O2O线上商城的设计和开发。 本地生活商城一般会涉及到区域以及频道类,一般下单需要支持用户定位、商家定位,这样利于用户可以快速找到…...
41. 如何在MyBatis-Plus中实现批量操作?批量插入和更新的最佳实践是什么?
在 MyBatis-Plus 中,实现批量操作(如批量插入、批量更新)是非常常见的需求。MyBatis-Plus 提供了对批量操作的良好支持,可以通过多种方式实现高效的批量处理。下面详细介绍批量操作的实现方式以及最佳实践。 1. 批量插入 批量插入…...
LlamaIndex 的Node节点后处理器模块介绍
Node 后处理器模块 LlamaIndex 是一个旨在连接大型语言模型(LLMs)与外部数据的框架,允许开发者构建能够处理和回应复杂查询的应用程序。在这个框架内,NodePostProcessor 扮演着优化数据处理流程的重要角色。为了更好地理解 NodeP…...
Dubbo 如何使用 Zookeeper 作为注册中心:原理、优势与实现详解
Dubbo 是一个高性能的 Java 分布式服务框架,而 Zookeeper 常被用作 Dubbo 的服务注册中心。Zookeeper 提供了分布式一致性和协调服务,Dubbo 通过 Zookeeper 实现服务注册与发现功能,确保在分布式环境下服务实例的动态管理和可靠发现。 下面是…...

Linux:进程间通信之命名管道
Linux:进程间通信-CSDN博客 我们说匿名管道只能用于父子进程这样的关系通信,那么陌生进程怎么通信? 我们之前说父子进程能通信的最关键的地方就在于子进程复制了一份父进程的files_struct,从而通过文件的inode映射同一份文件来通…...

UE4_后期处理七—仿红外线成像效果
效果图展示: 参考文档:https://dev.epicgames.com/documentation/zh-cn/unreal-engine/using-fresnel-in-your-unreal-engine-materials?application_version5.4 二、所用知识点扩充 在创建电影或过场动画时,你常常需要想办法更好地突显角…...

静态路由和默认路由(实验)
目录 一、实验设备和环境 1、实验设备 2、实验环境 (1)实验拓扑图 (2)实验命令列表 二、实验记录 1、直连路由与路由表查看 步骤1:建立物理连接并运行超级终端。 步骤2:在路由器上查看路由表。 2、静态路由配置 步骤1:配…...

TCP: Textual-based Class-aware Prompt tuning for Visual-Language Model
文章汇总 存在的问题 原文:具有图像特定知识的图像条件提示符号在提升类嵌入分布方面的能力较差。 个人理解:单纯把"a photo of {class}"这种提示模版作为输入是不利于text encoder学习的 动机 在可学习的提示和每一类的文本知识之间建立…...

2024年软考网络工程师中级题库
1【考生回忆版】以下不属于5G网络优点的是(A) A.传输过程中消耗的资源少,对设备的电池更友好 B.支持大规模物联网,能够连接大量低功耗设备,提供更高效的管理 C.引入了网络切片技术,允许将物理网络划分为多个虚拟网络…...

CSS的盒子模型(Box Model)
所有HTML元素都可以看作盒子,在CSS中盒子模型是用来设计和布局的,CSS盒子模型本质上是一个盒子,分装周围的HTML元素包括:外边距,边框,内边距和实际内容。 Margin(外边距) 清除边框…...
用OpenSSL搭建PKI证书体系
1 创建PKI结构目录 mkdir 07_PKI cd 07_PKI mkdir 01_RootCA 02_SubCA 03_Client2 创建根CA cd 01_RootCA mkdir key csr cert newcerts touch index.txt index.txt.attr echo 01 > serial2.1 创建根CA密钥对 2.1.1 生成 长度为2048 bit 的RSA私钥。 cd key openssl gen…...

scp 命令:在两台主机间远程传输文件
一、命令简介 scp 命令使用 SSH 加密的方式在本地主机和远程主机之间复制文件。 二、命令参数 格式 scp [选项] 发送方主机和目录 接收方主机和目录注意:左边是发送方,右边是接收方。固定格式。 示例 #示例1 scp ~/test.txt soulio172.1…...

家用迷你洗衣机哪款质量高?五大热销高分单品强势来袭
迷你内衣洗衣机一般是为婴儿宝宝,或者一些有特殊需要的用户而设计使用的,宝宝衣物换洗频繁,而且对卫生方面的除菌要求高,而为避免交叉感染,所以一般不适合和大人的衣物放在一起洗,因此对于有宝宝的家庭来说…...
rpm 命令:RedHat底层包管理器
一、命令简介 rpm 是 Red Hat Package Manager 的缩写,是 Red Hat、CentOS、Fedora 等基于 Red Hat 的 Linux 发行版中用于管理和安装软件包的工具。它能够安装、卸载、升级、查询和验证软件包。 相关命令: rpm 是基础,提供了底层的软…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...

【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...

ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...

Xela矩阵三轴触觉传感器的工作原理解析与应用场景
Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知,帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量,能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度,还为机器人、医疗设备和制造业的智…...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理
在城市的某个角落,一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延,滚滚浓烟弥漫开来,周围群众的生命财产安全受到严重威胁。就在这千钧一发之际,消防救援队伍迅速行动,而豪越科技消防一体化安全管控平台构建的消防“…...

yaml读取写入常见错误 (‘cannot represent an object‘, 117)
错误一:yaml.representer.RepresenterError: (‘cannot represent an object’, 117) 出现这个问题一直没找到原因,后面把yaml.safe_dump直接替换成yaml.dump,确实能保存,但出现乱码: 放弃yaml.dump,又切…...

Mysql故障排插与环境优化
前置知识点 最上层是一些客户端和连接服务,包含本 sock 通信和大多数jiyukehuduan/服务端工具实现的TCP/IP通信。主要完成一些简介处理、授权认证、及相关的安全方案等。在该层上引入了线程池的概念,为通过安全认证接入的客户端提供线程。同样在该层上可…...

【若依】框架项目部署笔记
参考【SpringBoot】【Vue】项目部署_no main manifest attribute, in springboot-0.0.1-sn-CSDN博客 多一个redis安装 准备工作: 压缩包下载:http://download.redis.io/releases 1. 上传压缩包,并进入压缩包所在目录,解压到目标…...

Redis上篇--知识点总结
Redis上篇–解析 本文大部分知识整理自网上,在正文结束后都会附上参考地址。如果想要深入或者详细学习可以通过文末链接跳转学习。 1. 基本介绍 Redis 是一个开源的、高性能的 内存键值数据库,Redis 的键值对中的 key 就是字符串对象,而 val…...