建造者模式__c#

embedded/2024/12/23 4:34:22/

目录

调用

指挥者

抽象建造者

建造者

定义具体产品


调用

用指挥者指挥建造者建造产品

在指挥者这里组装成产品

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; }}
}


http://www.ppmy.cn/embedded/118311.html

相关文章

等保测评:企业如何构建安全的网络架构

等保测评的目的和重要性 等保测评&#xff08;信息安全等级保护测评&#xff09;是企业构建安全网络架构的重要依据。它通过对信息系统的安全等级进行评估&#xff0c;帮助企业识别潜在的安全风险&#xff0c;提供科学的安全保护建议&#xff0c;确保网络系统的稳定和可靠运行。…

Apache APISIX学习(1):介绍、docker启动

一、介绍 Apache APISIX 是一个动态、实时、高性能的 API 网关&#xff0c; 提供负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。你可以把 Apache APISIX 当做流量入口&#xff0c;来处理所有的业务数据&#xff0c;包括动态路由、动态上游…

第24届工博会盛大开启,大腾智能携前沿数字化解决方案亮相

2024年9月24日&#xff0c;第24届中国国际工业博览会(ICIF China 2024)&#xff08;以下简称“工博会”&#xff09;在上海盛大开幕。本届工博会以“新质领航 数字赋能”为主题&#xff0c;覆盖工业自动化、智能制造等多个领域&#xff0c;汇聚全球制造业的精英与前沿技术&…

仓库场景物品检测分类系统源码分享

仓库场景物品检测分类检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Comp…

【入门01】arcgis api 4.x 创建地图、添加图层、添加指北针、比例尺、图例、卷帘、图层控制控件(附完整源码)

1.效果 2.代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title></title><link rel"s…

计算机各专业2025毕业设计选题推荐【各专业 | 最新】

计算机各专业2025毕业设计选题推荐 Java、Python、Vue、PHP、小程序、安卓、大数据、爬虫、可视化、机器学习、深度学习 1.Java 基于Java的在线购物系统设计与实现Java开发的图书管理系统基于Spring Boot的社交媒体平台Java实现的移动健康应用在线学习平台的Java后台开发基于…

Linux嵌入式驱动开发指南(速记版)---Linux基础篇

第一章 Ubuntu系统入门 uname -a #查看内核版本 cat etc/issue #查看系统版本 1.1 Linux磁盘管理 1.1.1 Linux磁盘管理基本概念 关键词&#xff1a; Linux 磁盘管理 挂载点 /etc/fstab文件 分区 ls /dev/sd* 联系描述&#xff1a; Linux 磁盘管理体系通过“挂载点”概念替代…

初识前端监控

以下笔记来源&#xff1a;黑马程序员 背景 思考一下&#xff0c;我们的项目代码在上线之后是不是就不用管了呢&#xff1f; 并不是&#xff0c;作为前端开发工程师&#xff0c;我们是直接跟用户打交道的&#xff0c;一个应用的用户留存率跟这个应用的稳定性有很大的关系&…