【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();
    }
}
相关推荐
吴可可1233 小时前
C#重写机制与CAD图元开发要点
c#
A_nanda3 小时前
c#WPF开发常见问题
开发语言·c#·wpf
唐青枫3 小时前
别只会解析参数:C#.NET Spectre.Console.Cli 命令行工具实战详解
c#·.net
AI刀刀4 小时前
腾讯元宝粘贴到 word 格式混乱,AI 导出鸭一键规整排版
人工智能·c#·word·ai导出鸭
微小冷5 小时前
海康威视相机C#二次开发指图像采集
数码相机·c#·二次开发·机器视觉·海康威视·mvs·相机开发
Cosolar7 小时前
DeepSeek Harness 理解 Harness 的设计哲学 - 可组合的插件运行时
人工智能·设计模式·架构
rick9777 小时前
WinForms 父子窗体数据传递的进化之路:从参数注入到事件回传的完美闭环
c#
淡海水7 小时前
C#与常用数据结构源码剖析-全篇导览
开发语言·数据结构·unity·面试·职场和发展·c#
在世修行7 小时前
从零打造 C# 工业视觉检测系统(十五):项目打包部署与进阶展望
开发语言·c#·视觉检测
Nebula_g8 小时前
JavaSE基础语法:特殊类(特殊情景下的设计模式)
java·开发语言·设计模式