当前位置: 首页 > 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.lryc.cn/news/573918.html

相关文章:

  • JMeter API 并发性能测试计划JMX文件解析
  • 【力扣 中等 C】983. 最低票价
  • 通义大模型在文档自动化处理中的高效部署指南(OCR集成与批量处理优化)
  • Flink SourceFunction深度解析:数据输入的起点与奥秘
  • OpenAI 如何将 Kubernetes 扩展到了 7500 个节点
  • 46- 赎金信
  • 如何仅用AI开发完整的小程序<3>—创建小程序基础框架
  • python案例练习
  • 《单光子成像》第八章 预习2025.6.22
  • 零基础学习Redis(14) -- Spring中使用Redis
  • AIGC技术的本质:统计学驱动的智能革命
  • 制造业B端登录页案例:生产数据安全入口的权限分级设计
  • 【ELK(Elasticsearch+Logstash+Kibana) 从零搭建实战记录:日志采集与可视化】
  • 防御悬垂指针:C++的多维度安全实践指南
  • 【分布式技术】Bearer Token以及MAC Token深入理解
  • Ubuntu修改Swap交换空间大小
  • SQL Server 基础语句3: 数据操作(插入、删除、更新表)与数据类型
  • 考研408《计算机组成原理》复习笔记,第三章(1)——存储系统概念
  • (C++)素数的判断(C++教学)(C语言)
  • UNet改进(4):交叉注意力(Cross Attention)-多模态/多特征交互
  • 测试工程师实战:用 LangChain+deepseek构建多轮对话测试辅助聊天机器人
  • 2025-06-22 思考-人的意识与不断走向死亡的过程
  • P99延迟:系统性能优化的关键指标
  • AWS认证系列:考点解析 - cloud trail,cloud watch,aws config
  • MySQL之索引结构和分类深度详解
  • 【构建大型语言模型】
  • 鸿蒙 Column 组件指南:垂直布局核心技术与场景化实践
  • 【PyTorch项目实战】CycleGAN:无需成对训练样本,支持跨领域图像风格迁移
  • 《计算机网络:自顶向下方法(第8版)》Chapter 8 课后题
  • 华为云Flexus+DeepSeek征文|基于Dify构建解析网页写入Notion笔记工作流