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; } // GB
public 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; // 最低16GB
public 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; // 最低8GB
public 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
- 外设: 绘图板