当前位置: 首页 > 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
- 外设: 绘图板

 

相关文章:

  • 【软考高级系统架构论文】# 论软件设计方法及其应用
  • 2025年SVN学习价值分析
  • PostgreSQL全栈部署指南:从零构建企业级高可用数据库集群
  • DataX 实现 Doris 和 MySQL 双向同步完全指南
  • 【破局痛点,赋能未来】领码 SPARK:铸就企业业务永续进化的智慧引擎—— 深度剖析持续演进之道,引领数字化新范式
  • 【unitrix】 4.0 类型级数值表示系统(types.rs)
  • 【数据结构与算法】数据结构初阶:详解顺序表和链表(一)
  • day39/60
  • LINUX 622 SAMBA
  • React基础
  • Spring JDBC配置与讲解
  • PixPin:一个强大且免费的截图贴图工具
  • 【51单片机】串口通信
  • Rust 引用与借用
  • Git使用总结
  • Android Studio报错:Supertypes of the following classes cannot be resolved
  • 【C++开发】CMake构建工具
  • 从Git历史中删除大文件的完整解决方案
  • 图灵完备之路(数电学习三分钟)----门的多路化
  • mysql join的原理及过程
  • 孝感网站开发选优搏/google adwords关键词工具
  • 做网站推广怎么跟客户沟通/必应bing国内版
  • 江苏省建设工程协会网站/百度一下你就知道了 官网
  • 本机电脑怎么做网站/外贸网站营销推广
  • 网站建设几大技巧/百度热搜的含义
  • 企业营销推广/爱站网seo