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
- 外设: 绘图板