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

在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

相关文章:

  • Spring cloud-k8s容器化部署
  • 同步与异步:软件工程中的时空艺术与实践智慧-以蜻蜓hr人才系统举例-优雅草卓伊凡
  • 记录rust滥用lazy_static导致的一个bug
  • 论文笔记 - 《Implementing block-sparse matrix multiplication kernels using Triton》
  • Linux【7】------Linux系统编程(进程间通信IPC)
  • docker-compose和docker下载
  • mysql DQL(javaweb第七天)
  • 博客:基本框架设计(下)
  • 搭建第一个 Vite 项目
  • 【读论文】DiffPhyCon 扩散物理系统控制
  • 【Django】性能优化-普通版
  • C++ 网络编程(11)服务器逻辑层设计和消息完善
  • 7.7 Extracting and saving responses
  • 【医学目标检测】LN-DETR:一种基于多尺度特征融合的肺结节检测高效Transformer架构
  • Ceph分布式存储方案
  • Barcode解码 一维码、二维码识别 物流单号识别
  • ss928v100模型的导出、量化和转换
  • Kotlin的MutableList和ArrayList区别
  • Kotlin基础语法三
  • IntelliJ IDEA代码提示忽略大小写设置详解
  • 昌邑网站建设公司/百度如何搜索网址
  • 网站建设模板平台/好的在线crm系统
  • 360网站推广电话/武汉网站制作推广
  • 网站建设及维护协议/近期的新闻热点
  • 西宁做网站公司排名/seo泛目录培训
  • 网站开发能不能用win7系统/seo实战培训王乃用