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

在C# 中使用建造者模式

C# 的建造者模式比java强大的多, 它提供了 return this的语法, 可以让建造者模式使用链式语法. Action关键字可以使配置更加灵活

举例 如下:

    public class ComputerBuilderFactory{public static IComputerBuilder CreateBuilder(){return new ComputerBuilder();}}
    public interface IComputerBuilder{Computer Build();IComputerBuilder SetHost(string hostName);IComputerBuilder SetIp(string ip);IComputerBuilder SetHardWare(Action<HardWareWrapper> config);}
    public class HardWareWrapper{private readonly HardWare hardWare;public HardWareWrapper(HardWare hardWare){this.hardWare = hardWare;}public HardWareWrapper SetCpu(string cpu){hardWare.Cpu = cpu;return this;}public HardWareWrapper SetMemory(string memory){hardWare.Memory = memory;return this;}public HardWareWrapper SetStorage(string storage){hardWare.Storage = storage;return this;}}
    public class HardWare{public string Cpu { get; set; } = string.Empty;public string Memory { get; set; } = string.Empty;public string Storage { get; set; } = string.Empty;}
    public class ComputerBuilder : IComputerBuilder{private HardWare hardWare = new();private string hostName = string.Empty;private string ip = string.Empty;public Computer Build(){return new(hostName, ip, hardWare);}public IComputerBuilder SetHardWare(Action<HardWareWrapper> config){HardWareWrapper wrapper = new HardWareWrapper(hardWare);config?.Invoke(wrapper);return this;}public IComputerBuilder SetHost(string hostName){this.hostName = hostName ?? string.Empty;return this;}public IComputerBuilder SetIp(string ip){this.ip = ip ?? string.Empty;return this;}}
    public class Computer{public Computer(string ip, string host, HardWare myHardWare){Ip = ip;Host = host;MyHardWare = myHardWare;}public string Ip { get; }public string Host { get; }public HardWare MyHardWare { get; }public override string ToString(){return $"ip:{Ip}, host:{Host}, Memory:{MyHardWare.Memory}, Storage:{MyHardWare.Storage}, Cpu:{MyHardWare.Cpu}";}}

可以在builder 中 写set方法, 返回return
在computer 实体类中通过构造函数传入
HardWare的属性配置可以用Action 传入HardWare 类型的参数进行配置, HardWare和其他字段一起以private字段的形式留在ComputerBuilder 中, 使用HardWareWrapper 配置 HardWare, 构造器传入HardWareWrapper 的 HardWare

http://www.xdnf.cn/news/13463.html

相关文章:

  • 算法题(167):FBI树
  • Oracle日志体系和遇到问题后日志排查路径
  • 行为模式-责任链模式
  • 进行性核上性麻痹健康护理指南:全方位照护之道
  • Pytorch 的编程技巧
  • Java八股文——Spring「Spring 篇」
  • 5.4.2树、森林与二叉树的转换
  • 今日行情明日机会——20250611
  • Android GreenDAO 通过 Key 查询数据库数据慢问题优化
  • 13.自治系统路由计算题
  • Node.js:开启现代服务器端编程的新篇章
  • h5fortran 简介与使用指南
  • 新能源知识库(36)什么是BMU
  • 51LA数据分析遇瓶颈?免费统计工具——悟空统计
  • 大话软工笔记—工程分解
  • GlusterFS分布式文件系统
  • 【Keepalived】Keepalived-2.3.4恢复对RHEL7的支持
  • 第七章: SEO与渲染方式 三
  • (十一)优化算法(Optimization):深度学习训练中的收敛性分析与泛化理论
  • 鹰盾视频加密器Windows播放器AI溯源水印技术方案解析
  • ros2--Sophus
  • “新液冷”破题“智算热”,数字经济低碳化发展新解
  • 【Linux】Linux 操作系统 - 22 , 软硬链接详解 !
  • 104.解决在流式回答功能实现之后上传附件功能失效bug之前端处理
  • DAY 28 类的定义和方法
  • 三代社保卡全字段识别-社保卡识别软件-社保卡识别接口集成
  • 结合redis实现文件分片秒传断点续传
  • Linuxkernel学习-deepseek-2
  • Java-43 深入浅出 Nginx - 基本配置方式 nginx.conf Events块 HTTP块 反向代理 负载均衡
  • idea不同颜色总结