C# 建造者模式(Builder Pattern)
创始人
2025-01-15 06:38:02
0

建造者模式(Builder Pattern),也被称为生成器模式,是一种对象构建模式,旨在将复杂对象的构建过程与表示分离,使得同样的构建过程可以创建不同的表示。这种模式特别适用于构建具有多个组成部分的复杂对象,且这些组成部分的创建和组装方式相对独立。

public class BuilderPatternTest {     public void Main()     {         var director = new Director();//指挥者1         var director1 = new Director1();//指挥者2         var desktopBuilder = new DesktopBuilder();//建造者1         var desktopBuilder2 = new DesktopBuilder2();//建造者2          //第一台电脑,使用指挥者1,使用建造者1         var computer1 = director.Construct(desktopBuilder);         Console.WriteLine(computer1.ToString());          //第二台电脑,使用指挥者2,使用建造者2         var computer2 = director1.Construct(desktopBuilder);         Console.WriteLine(computer2.ToString());          //第三台电脑,使用指挥者1,使用建造者2         var computer3 = director.Construct(desktopBuilder2);         Console.WriteLine(computer3.ToString());          //第四台电脑,使用建造者1,不使用指挥者         var computer4 = new DesktopBuilder()             .SetType("平板电脑")             .SetRam(256)             .SetProcessor("i13212")             .Build();         Console.WriteLine(computer4.ToString());     } }  // 定义产品类 public class Computer {     public string Type { get; }     public bool IsGraphicsCardIncluded { get; }     public int Ram { get; }     public string Processor { get; }      public Computer(string type, bool isGraphicsCardIncluded, int ram, string processor)     {         Type = type;         IsGraphicsCardIncluded = isGraphicsCardIncluded;         Ram = ram;         Processor = processor;     }      public override string ToString()     {         return $"Type: {Type}, Graphics Card: {IsGraphicsCardIncluded}, RAM: {Ram}GB, Processor: {Processor}";     } }  // 抽象建造者 // 也可以使用接口实现抽象建造者 // 方法中返回自身,以便链式调用 public abstract class Builder {     protected string Type;     protected bool IsGraphicsCardIncluded;     protected int Ram;     protected string Processor;      public abstract Computer Build();      public virtual Builder SetType(string type)     {         return this;     }      public virtual Builder SetGraphicsCard(bool isGraphicsCardIncluded)     {         return this;     }      public virtual Builder SetRam(int ram)     {         return this;     }      public virtual Builder SetProcessor(string processor)     {         return this;     } }  // 具体建造者 public class DesktopBuilder : Builder {     public override Computer Build()     {         return new Computer(Type, IsGraphicsCardIncluded, Ram, Processor);     }      public override DesktopBuilder SetType(string type)     {         Type = type;         return this;     }      public override DesktopBuilder SetGraphicsCard(bool isGraphicsCardIncluded)     {         IsGraphicsCardIncluded = isGraphicsCardIncluded;         return this;     }      public override DesktopBuilder SetRam(int ram)     {         Ram = ram;         return this;     }      public override DesktopBuilder SetProcessor(string processor)     {         Processor = processor;         return this;     } }  public class DesktopBuilder2 : Builder {     public override Computer Build()     {         return new Computer(Type, IsGraphicsCardIncluded, Ram, Processor);     }      public override DesktopBuilder2 SetType(string type)     {         Type = type;         return this;     }      public override DesktopBuilder2 SetGraphicsCard(bool isGraphicsCardIncluded)     {         IsGraphicsCardIncluded = isGraphicsCardIncluded;         return this;     }      public override DesktopBuilder2 SetRam(int ram)     {         Ram = ram;         return this;     } }  // 导演类 public class Director {     public Computer Construct(Builder builder)     {         builder.SetType("台式电脑");         builder.SetGraphicsCard(true);         builder.SetRam(16);         builder.SetProcessor("i7");         return builder.Build();     } }  public class Director1 {     public Computer Construct(Builder builder)     {         builder.SetType("笔记本电脑");         builder.SetGraphicsCard(true);         builder.SetRam(128);         builder.SetProcessor("i1000");         return builder.Build();     } }

相关内容

热门资讯

辅助黑科技(红龙扑克辅助器使用... 辅助黑科技(红龙扑克辅助器使用教程)外挂黑科技辅助技巧(透视)其实有挂(黑科技揭秘)1、红龙扑克辅助...
黑科技数据!wpk辅助器安装(... 1、黑科技数据!wpk辅助器安装(Wepoke)软件透明挂辅助挂(必看攻略黑科技神器)(UU pok...
免费黑科技!德扑ai智能机器人... 免费黑科技!德扑ai智能机器人代理(透视)太坑了有挂(第三方教程黑科技介绍)德扑ai智能机器人代理辅...
新荣耀辅助安装,创思维激k看底... 新荣耀辅助安装,创思维激k看底牌辅助,wepoker底牌透视脚本http(有挂细节)1、完成创思维激...
黑科技最新(wepokeai代... 黑科技最新(wepokeai代打辅助)外挂黑科技辅助方法(透视)都是真的是有挂(黑科技解说)所有人都...
黑科技模拟器!德州wpk辅助真... 黑科技模拟器!德州wpk辅助真的(wePoKe)外挂黑科技辅助安装(科普分享黑科技教程)这是由厦门游...
肯定黑科技!红龙扑克辅助器(透... 肯定黑科技!红龙扑克辅助器(透视)太坑了真的是有挂(新2025教程黑科技揭秘);1、红龙扑克辅助器透...
九天大厅辅助器,福建大玩家辅助... 九天大厅辅助器,福建大玩家辅助下载,wpk透视辅助方法(有挂教程);1、福建大玩家辅助下载透视辅助简...
黑科技ai代打(wpk透视外挂... 黑科技ai代打(wpk透视外挂会怎么样)外挂透视辅助下载(透视)确实存在有挂(黑科技解说);1、每一...
黑科技教学!aa扑克用模拟器(... 黑科技教学!aa扑克用模拟器(WepokE)透明黑科技辅助工具(盘点一款黑科技透视);支持多人共享记...