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

C#设计模式-Builder-生成器-对象创建型模式

using System;
using System.Collections.Generic;namespace A4_Builder_生成器_对象创建型模式
{// 产品类:最终要构建的复杂对象public class Computer{public string CPU { get; set; }public string GPU { get; set; }public int RAM { get; set; } // GBpublic List<string> Storage { get; } = new List<string>();public List<string> Peripherals { get; } = new List<string>();public void DisplayConfiguration(){Console.WriteLine("计算机配置:");Console.WriteLine($"- CPU: {CPU}");Console.WriteLine($"- GPU: {GPU ?? "集成显卡"}");Console.WriteLine($"- RAM: {RAM}GB");Console.WriteLine($"- 存储设备: {string.Join(", ", Storage)}");Console.WriteLine($"- 外设: {(Peripherals.Count > 0 ? string.Join(", ", Peripherals) : "无")}");Console.WriteLine("\n");}}// 抽象生成器接口public interface IComputerBuilder{void SetCPU(string model);void SetGPU(string model);void SetRAM(int size);void AddStorage(string device);void AddPeripheral(string device);Computer Build();}// 具体生成器:游戏电脑配置public class GamingComputerBuilder : IComputerBuilder{private Computer _computer = new Computer();public void SetCPU(string model) => _computer.CPU = $"{model} (超频版)";public void SetGPU(string model) => _computer.GPU = $"{model} RTX";public void SetRAM(int size) => _computer.RAM = size >= 16 ? size : 16; // 最低16GBpublic void AddStorage(string device){if (!device.Contains("SSD"))device += " SSD";_computer.Storage.Add(device);}public void AddPeripheral(string device){if (device == "鼠标") device = "游戏鼠标";if (device == "键盘") device = "机械键盘";_computer.Peripherals.Add(device);}public Computer Build() => _computer;}// 具体生成器:办公电脑配置public class OfficeComputerBuilder : IComputerBuilder{private Computer _computer = new Computer();public void SetCPU(string model) => _computer.CPU = $"{model} (节能版)";public void SetGPU(string model) => _computer.GPU = "集成显卡";public void SetRAM(int size) => _computer.RAM = size >= 8 ? size : 8; // 最低8GBpublic void AddStorage(string device) => _computer.Storage.Add(device);public void AddPeripheral(string device) => _computer.Peripherals.Add(device);public Computer Build() => _computer;}// 指挥者:控制构建流程public class ComputerDirector{public Computer BuildHighEndGamingPC(IComputerBuilder builder){builder.SetCPU("Intel i9-13900K");builder.SetGPU("NVIDIA RTX 4090");builder.SetRAM(32);builder.AddStorage("1TB NVMe SSD");builder.AddStorage("2TB SATA SSD");builder.AddPeripheral("鼠标");builder.AddPeripheral("键盘");builder.AddPeripheral("电竞显示器");return builder.Build();}public Computer BuildStandardOfficePC(IComputerBuilder builder){builder.SetCPU("Intel i5-12400");builder.SetRAM(16);builder.AddStorage("512GB SSD");builder.AddPeripheral("鼠标");builder.AddPeripheral("键盘");return builder.Build();}}// 客户端代码class Program{static void Main(string[] args){var director = new ComputerDirector();// 构建游戏电脑var gamingBuilder = new GamingComputerBuilder();var gamingPC = director.BuildHighEndGamingPC(gamingBuilder);gamingPC.DisplayConfiguration();// 构建办公电脑var officeBuilder = new OfficeComputerBuilder();var officePC = director.BuildStandardOfficePC(officeBuilder);officePC.DisplayConfiguration();// 自定义构建var customBuilder = new OfficeComputerBuilder();customBuilder.SetCPU("AMD Ryzen 7 5800X");customBuilder.SetGPU("AMD Radeon RX 6700 XT");customBuilder.SetRAM(64);customBuilder.AddStorage("2TB NVMe SSD");customBuilder.AddPeripheral("绘图板");var customPC = customBuilder.Build();customPC.DisplayConfiguration();}}
}

计算机配置:
- CPU: Intel i9-13900K (超频版)
- GPU: NVIDIA RTX 4090 RTX
- RAM: 32GB
- 存储设备: 1TB NVMe SSD SSD, 2TB SATA SSD SSD
- 外设: 游戏鼠标, 机械键盘, 电竞显示器计算机配置:
- CPU: Intel i5-12400 (节能版)
- GPU: 集成显卡
- RAM: 16GB
- 存储设备: 512GB SSD
- 外设: 鼠标, 键盘计算机配置:
- CPU: AMD Ryzen 7 5800X (节能版)
- GPU: AMD Radeon RX 6700 XT
- RAM: 64GB
- 存储设备: 2TB NVMe SSD
- 外设: 绘图板

 

http://www.lqws.cn/news/480205.html

相关文章:

  • 编程江湖-设计模式
  • CentOS7中源码编译安装freeswitch
  • [project-based-learning] 开源贡献指南 | 自动化链接验证 | Issue模板规范
  • 系统思考:救火先放火
  • 详解Redis数据库和缓存不一致的情况及解决方案
  • sc4336p硬件设计上电时序
  • DeepSeek技术解析:开源大模型的创新突围之路
  • 基于Python Websockets的客户端程序,能够连接服务端、处理ping/pong、发送订阅请求并保持长连接
  • 《算法笔记》之二(笔记)
  • 基于split-Bregman算法的L1正则化matlab仿真,对比GRSR算法
  • RA4M2开发IOT(8)----IIC驱动OLED
  • 分库分表下的 ID 冲突问题与雪花算法讲解
  • Qt项目,记事本
  • YOLOv8/11自定义seg分割数据集格式转换json2txt
  • 第八章 目录一致性协议 A Primer on Memory Consistency and Cache Coherence - 2nd Edition
  • 如何用AI开发完整的小程序<10>—总结
  • unity版本控制PlasticSCM转git
  • 需求初步探讨-从OR-AR
  • 《Redis》事务
  • 抽象工厂设计模式
  • 查询消耗 IO 多的 SQL -达梦
  • 一个免费的视频、音频、文本、图片多媒体处理工具
  • 数据库高性能应用分析报告
  • 鸿蒙 Column 组件指南:垂直布局核心技术与场景化实践
  • Python爬虫实战:研究Ghost.py相关技术
  • 【深度学习与机器学习的区别】从本质到应用的全景对比
  • 单例模式-Python示例
  • 多设备Obsidian笔记同步:WebDAV与内网穿透技术高效实现教程
  • 探秘Flink Connector加载机制:连接外部世界的幕后引擎
  • 考研408《计算机组成原理》复习笔记,第三章(1)——存储系统概念