【C#设计模式(4)——构建者模式(Builder Pattern)】

前言

C#设计模式(4)------构建者模式(Builder Pattern)

运行结果

代码

csharp 复制代码
public class Computer 
{
    private string part1 = "CPU";
    private string part2 = "主板";
    private string part3 = "内存";
    private string part4 = "显卡";
    private string part5 = "显示器";
    private string part6 = "磁盘";
    private string part7 = "声卡";
    private string part8 = "网卡";

    public void SetPart1(string part) { Console.WriteLine($"{part1}:{part}"); }
    public void SetPart2(string part) { Console.WriteLine($"{part2}:{part}"); }
    public void SetPart3(string part) { Console.WriteLine($"{part3}:{part}"); }
    public void SetPart4(string part) { Console.WriteLine($"{part4}:{part}"); }
    public void SetPart5(string part) { Console.WriteLine($"{part5}:{part}"); }
    public void SetPart6(string part) { Console.WriteLine($"{part6}:{part}"); }
    public void SetPart7(string part) { Console.WriteLine($"{part7}:{part}"); }
    public void SetPart8(string part) { Console.WriteLine($"{part8}:{part}"); }
}
//构建者抽象类
public abstract class Builder
{
    protected Computer computer;
    public Builder () {  this.computer = new Computer(); }
    public abstract void BuildPart1();
    public abstract void BuildPart2();
    public abstract void BuildPart3();
    public abstract void BuildPart4();
    public abstract void BuildPart5();
    public abstract void BuildPart6();
    public abstract void BuildPart7();
    public abstract void BuildPart8();
    public Computer GetComputer() { return computer; }
}
//构建者实体类
public class ComputerBuider : Builder
{
    public override void BuildPart1()
    {
        computer.SetPart1($"AMD Ryzen 7 7745HX with Radeon Graphic 八核");
    }

    public override void BuildPart2()
    {
        computer.SetPart2($"MECHERVO MRID6-23");
    }

    public override void BuildPart3()
    {
        computer.SetPart3($"32GB DDR5 4800MHz( 16GB + 16GB )");
    }

    public override void BuildPart4()
    {
        computer.SetPart4($"NVIDIA GeForce RTX 4060 Laptop GPU (8GB / 清华同方)");
    }

    public override void BuildPart5()
    {
        computer.SetPart5($"TL160ADMP19[TMA2031] (16.3英寸)");
    }

    public override void BuildPart6()
    {
        computer.SetPart6($"KINGSTON OM8PGP41024N-A0 (1024GB)");
    }

    public override void BuildPart7()
    {
        computer.SetPart7($"NVIDIA High Definition Audio");
    }

    public override void BuildPart8()
    {
        computer.SetPart8($"Intel(R) Wi-Fi 6 AX200 160MHz");
    }
}
// 指挥者类
public class Director
{
    private Builder builder;

    public void SetBuilder(Builder builder)
    {
        this.builder = builder;
    }
    public Computer Construct()
    {
        builder.BuildPart1();
        builder.BuildPart2();
        builder.BuildPart3();
        builder.BuildPart4();
        builder.BuildPart5();
        builder.BuildPart6();
        builder.BuildPart7();
        builder.BuildPart8();
        return builder.GetComputer();
    }
}

/*
 * 构建者模式:Builder Pattern
 */
internal class Program
{
    static void Main(string[] args)
    {

        Director director = new Director();
        Builder builder = new ComputerBuider();
        director.SetBuilder(builder);

        Computer computer = director.Construct();
        Console.ReadLine();
    }
}
相关推荐
samble11 小时前
从零搭建灌装监控系统(十九):单元测试实战,xUnit + 内存SQLite + 反射测试私有方法
c#·wpf·mvvm·modbus·工业控制
希洛兔12 小时前
状态模式详解:让对象随内部状态自动改变行为
java·设计模式·状态模式
人道领域14 小时前
【面试八股速通篇01】锁与并发工具
java·开发语言·面试·c#
宇卿.14 小时前
C#字段、属性、索引器、常量
开发语言·计算机视觉·c#
程序员Linc15 小时前
ONNXOCRSharp 开源手记 02|v0.4.0 PDF识别
开发语言·pdf·c#·ocr·onnxocrsharp
博风15 小时前
7、设计模式应用举例:策略模式:加密、解密文件
设计模式·策略模式
慧都小妮子15 小时前
MSG 附件太占内存?Aspose.Email for .NET 26.9 延迟加载
c#·.net·aspose·内存优化·延迟加载·aspose.email·附件内存
4SAPI15 小时前
Provider Adapter设计模式:如何让AI应用支持多个模型
网络·人工智能·设计模式
慧都小妮子16 小时前
FastReport PDF/UA 导出:让出海 PDF 满足无障碍合规要求
pdf·c#·fastreport·报表导出·pdf/ua·pdf 无障碍
geovindu18 小时前
rust: pool Pattern
开发语言·后端·设计模式·rust·对象池简写模式