C#设计模式之---建造者模式
建造者模式(Builder Pattern)
建造者模式(Builder Pattern)是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式使得建造代码与表示代码的分离,可以使客户端不必知道产品内部组成的细节,从而降低了客户端与具体产品之间的耦合度。使用多个简单的对象一步一步构建成一个复杂的对象。属于创建型模式,它提供了一种创建对象的最佳方式。
using System;
using System.Text;
namespace ConsoleApplication
{//建造者抽象类,定义了建造者的能力public abstract class Builder{public abstract void WriteCode(); //写代码public abstract void WriteAnnotation(); //写注释public abstract void Compile(); //编译}/// <summary>/// 高级的程序员/// </summary>public class SeniorBuilder : Builder{private StringBuilder program = new StringBuilder();public override void WriteCode(){program.Append("架构代码-->");}public override void WriteAnnotation(){program.Append("写注释-->");}public override void Compile(){program.Append("编译-->");}public string GetContent(){return program.Append("代码编写完成").ToString();}}/// <summary>/// 初级的程序员/// </summary>public class JuniorBuilder : Builder{private StringBuilder program = new StringBuilder();public override void WriteCode(){program.Append("实现功能代码-->");}public override void WriteAnnotation(){program.Append("写注释-->");}public override void Compile(){program.Append("编译代码-->");}public string GetContent(){return program.Append("简单小程序写完").ToString();}}//监工类,制定具体的步骤public class Director{private Builder builder;public Director(Builder builder){this.builder = builder;}//编写程序的流程,public void Construct(){builder.WriteCode(); //先写代码builder.WriteAnnotation();//写注释builder.Compile(); //编译程序}}class Program{static void Main(string[] args){//资深的程序员1编写程序SeniorBuilder seniorBuilder = new SeniorBuilder();Director director1 = new Director(seniorBuilder);director1.Construct();string p1 = seniorBuilder.GetContent();Console.WriteLine(p1);//资历较浅的程序员2编写程序JuniorBuilder juniorBuilder = new JuniorBuilder();Director director2 = new Director(juniorBuilder);director2.Construct();string p2 = juniorBuilder.GetContent();Console.WriteLine(p2);Console.ReadKey();}}
}
相关文章:
C#设计模式之---建造者模式
建造者模式(Builder Pattern) 建造者模式(Builder Pattern)是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式使得建造代码与表示代码的分离,可以使客户端不必知道…...
output delay 约束
output delay 约束 一、output delay约束概述二、output delay约束系统同步三、output delay约束源同步 一、output delay约束概述 特别注意:在源同步接口中,定义接口约束之前,需要用create_generated_clock 先定义送出的随路时钟。 二、out…...
html2Canvas+jsPDF 下载PDF 遇到跨域的对象存储的图片无法显示
一、问题原因 对象存储的域名和你网址的域名不一样,此时用Canvas相关插件 将DOM元素转化为PDF,就会出现跨域错误。 二、解决办法 两步 1. 图片元素上设置属性 crossorigin"anonymous" 支持原生img和eleme组件 2. 存储桶设置资源跨域访问…...
【C#】并行编程实战:异步流
本来这章该讲的是 ASP .NET Core 中的 IIS 和 Kestrel ,但是我看了下这个是给服务器用的。而我只是个 Unity 客户端程序,对于服务器的了解趋近于零。 鉴于我对服务器知识和需求的匮乏,这里就不讲原书(大部分)内容了。本…...
在家下载论文使用哪些论文下载工具比较好
在家下载论文如果不借助论文下载工具是非常艰难的事情,因为很多查找下载论文的数据库都是需要账号权限才可使用的。 例如,我们查找中文论文常用的知网、万方等数据库以及众多国外论文数据库。 在家下载知网、万方数据库论文可用下面的方法:…...
【LeetCode 算法】Handling Sum Queries After Update 更新数组后处理求和查询-Segment Tree
文章目录 Handling Sum Queries After Update 更新数组后处理求和查询问题描述:分析代码线段树 Tag Handling Sum Queries After Update 更新数组后处理求和查询 问题描述: 给你两个下标从 0 开始的数组 n u m s 1 和 n u m s 2 nums1 和 nums2 nums1…...
基于Linux操作系统中的MySQL数据库SQL语句(三十一)
MySQL数据库SQL语句 目录 一、SQL语句类型 1、DDL 2、DML 3、DCL 4、DQL 二、数据库操作 1、查看 2、创建 2.1、默认字符集 2.2、指定字符集 3、进入 4、删除 5、更改 6、练习 三、数据表操作 (一)数据类型 1、数值类型 1.1、TINYINT …...
【Matlab】基于BP神经网络的数据回归预测新数据(Excel可直接替换数据)
【Matlab】基于BP神经网络的数据回归预测新数据(Excel可直接替换数据) 1.模型原理2.数学公式3.文件结构4.Excel数据5.分块代码5.1 main.m5.2 NewData.m6.完整代码6.1 main.m6.2 NewData.m7.运行结果1.模型原理 基于BP神经网络的数据回归预测是一种常见的机器学习方法,用于处…...
HTTPS连接过程中的中间人攻击
HTTPS连接过程中的中间人攻击 HTTPS连接过程中间人劫持攻击 HTTPS连接过程 https协议就是httpssl/tls协议,如下图所示为其连接过程: HTTPS连接的整个工程如下: https请求:客户端向服务端发送https请求;生成公钥和私…...
redis启动失败,oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
在redis文件夹下,启动redis正常。 但是加入到system后启动redis失败。 一直处于starting状态。 对比正常redis服务的配置之后,把redis.conf里的守护进程关掉就可以了(但是没用system管理之前,直接./redis.server启动是可以的&…...
milvus: 专为向量查询与检索设计的向量数据库
1. 什么是milvus? milvus docs milvus release Milvus的目标是:store, index, and manage massive embedding vectors generated by deep neural networks and other machine learning (ML) models. Milvus 向量数据库专为向量查询与检索设计…...
【C# 数据结构】Heap 堆
【C# 数据结构】Heap 堆 先看看C#中有那些常用的结构堆的介绍完全二叉树最大堆 Heap对类进行排序实现 IComparable<T> 接口 对CompareTo的一点解释 参考资料 先看看C#中有那些常用的结构 作为 数据结构系类文章 的开篇文章,我们先了解一下C# 有哪些常用的数据…...
智慧园区楼宇合集:数字孪生管控系统
智慧园区是指将物联网、大数据、人工智能等技术应用于传统建筑和基础设施,以实现对园区的全面监控、管理和服务的一种建筑形态。通过将园区内设备、设施和系统联网,实现数据的传输、共享和响应,提高园区的管理效率和运营效益,为居…...
Ajax 黑马学习
Ajax 资源 数据是服务器对外提供的资源,通过 请求 - 处理 - 响应方式获取 请求服务器数据, 用到 XMLHttpRequest 对象 XMLHttpRequest 是浏览器提供的js成员, 通过它可以请求服务器上的数据资源 let xmlHttpRequest new XMLHttpRequest(); 请求方式 : get向服务器获取数据…...
软件应用开发的常见环境
一般来说,在小型项目中可能只有开发环境和生产环境;在中型项目中会有开发环境、staging environment、生产环境;在大型项目中会有开发环境、测试环境、staging environment、生产环境。 一、Dev Env / Development Environment 开发环境 开…...
Rust中的iter(), into_iter(), iter_mut()
在Rust中,iter(), into_iter(), iter_mut()都是用于在集合类型上创建迭代器的方法。这三个方法各有不同,下面一一进行介绍。 iter(): iter() 方法创建一个不可变的引用迭代器。当你只想读取集合中的元素,而不想改变它们或消耗集合时ÿ…...
[SQL挖掘机] - 日期函数 - current_date
current_date函数时,它通常被用来获取当前的日期。它返回一个表示当前日期的日期值。 current_date函数没有任何参数,因此只需简单地调用它即可获得系统当前日期。 以下是一个示例: select current_date;这将返回当前日期,例如…...
JAVA面试总结-Redis篇章(三)——缓存雪崩
JAVA面试总结-Redis篇章(三)——缓存雪崩...
maven编译报错
参考链接:mvn打包No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK_51CTO博客_mvn打包命令 在执行 yum install -y java-1.8.0-opensdk命令后,使用maven去编译打包,结果报错, …...
HPC集群调度系统和计算系统
什么是计算云? 所谓的计算云指的是为计算业务优化的类云基础架构,它强调用云的方式解决计算问题,而不是将“计算”搬到现有的公有云或者容器云上。 目前公有云或者容器云(例如k8s)上的HPC解决方案本质上都是将现有的H…...
数据结构之B树、B+树、B-树详解
B树、B树、B-树详解 目录 1. 引言2. B树(B-Tree) 2.1 定义2.2 特点2.3 操作2.4 应用场景 3. B树(B Tree) 3.1 定义3.2 特点3.3 操作3.4 应用场景 4. B-树(B-Tree) 4.1 定义4.2 特点4.3 操作4.4 应用场景 …...
Swagger Client 性能优化:10个技巧让你的 API 调用快如闪电
Swagger Client 性能优化:10个技巧让你的 API 调用快如闪电 【免费下载链接】swagger-js Javascript library to connect to swagger-enabled APIs via browser or nodejs 项目地址: https://gitcode.com/gh_mirrors/sw/swagger-js Swagger Client 是一款强大…...
BaiduNetdiskPlugin-macOS:解决百度网盘下载速度限制的实用优化方案
BaiduNetdiskPlugin-macOS:解决百度网盘下载速度限制的实用优化方案 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 在macOS环境下使用百度…...
Intv_ai_mk11 模型原理浅析:深入理解大语言模型背后的网络架构
Intv_ai_mk11 模型原理浅析:深入理解大语言模型背后的网络架构 1. 从简单对话到复杂生成:大语言模型的进化之路 想象一下你和朋友聊天的场景:你们能自然地理解对方的话,记住之前的对话内容,还能根据上下文给出恰当回…...
移动设备上实现实时人物移除的终极优化指南
移动设备上实现实时人物移除的终极优化指南 【免费下载链接】Real-Time-Person-Removal Removing people from complex backgrounds in real time using TensorFlow.js in the web browser 项目地址: https://gitcode.com/gh_mirrors/re/Real-Time-Person-Removal Real-…...
WindowResizer终极指南:三步解决Windows窗口无法调整大小的难题
WindowResizer终极指南:三步解决Windows窗口无法调整大小的难题 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 在日常使用Windows电脑时,你是否遇到过这样…...
Gemini助力Google Maps:开启智能出行新体验
Google Maps新成员Gemini:智能行程规划初体验 在Google Maps中,Gemini以“Ask Maps”的形式呈现,点击会弹出文本框。它能依据Google Maps的数据,结合用户评价来回答问题,还能从其他来源获取信息。测试中,让…...
千问3.5-2B参数详解:max_new_tokens=192如何平衡响应长度与推理延迟?实测数据
千问3.5-2B参数详解:max_new_tokens192如何平衡响应长度与推理延迟?实测数据 1. 模型概述 千问3.5-2B是Qwen系列中的小型视觉语言模型,具备图片理解与文本生成双重能力。这个2B参数的轻量级模型特别适合需要快速响应的应用场景,…...
Open Interpreter实时代码预览:沙箱模式部署详细说明
Open Interpreter实时代码预览:沙箱模式部署详细说明 1. 项目概述 Open Interpreter 是一个让人眼前一亮的开源工具,它能让你用平常说话的方式告诉AI要做什么,然后AI就会在你的电脑上直接写代码、运行代码,甚至帮你修改代码。想…...
深入Linux 0.11内核:从_syscall1宏到系统调用表的完整链路拆解
深入Linux 0.11内核:从_syscall1宏到系统调用表的完整链路拆解 在操作系统的演进历程中,系统调用机制始终扮演着用户程序与内核服务之间的关键桥梁角色。对于希望真正理解计算机系统底层运作的开发者而言,掌握系统调用的完整实现链路不仅是提…...
