using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace BuilderPattern { /// /// 指挥者(采购经理) /// public class Director { public void Construct(Builder builder) { builder.BuildMainFramePart(); builder.BuildScreenPart(); builder.BuildInputPart(); } } /// /// 建造者(模拟装机过程) /// 也可通过接口实现 /// public abstract class Builder { /// /// 组装主机 /// public abstract void BuildMainFramePart(); /// /// 组装显示器 /// public abstract void BuildScreenPart(); /// /// 组装输入设备(键鼠) /// public abstract void BuildInputPart(); /// /// 获取组装电脑 /// /// public abstract Computer GetComputer(); } /// /// 惠普电脑组装商 /// public class HpBulider : Builder { Computer hp = new Computer() { Band = "惠普" }; public override void BuildMainFramePart() { hp.AssemblePart("主机"); } public override void BuildScreenPart() { hp.AssemblePart("显示器"); } public override void BuildInputPart() { hp.AssemblePart("键鼠"); } public Computer GetComputer() { return hp; } } /// /// 戴尔电脑组装商 /// public class DellBulider : Builder { Computer dell = new Computer() { Band = "戴尔" }; public override void BuildMainFramePart() { dell.AssemblePart("主机"); } public override void BuildScreenPart() { dell.AssemblePart("显示器"); } public override void BuildInputPart() { dell.AssemblePart("键鼠"); } public Computer GetComputer() { return dell; } } /// /// 产品类 /// public class Computer { /// /// 品牌 /// public string Band { get; set; } /// /// 电脑组件列表 /// private List assemblyParts = new List(); /// /// 组装部件 /// /// 部件名称 public void AssemblePart(string partName) { this.assemblyParts.Add(partName); } public void ShowProcess() { Console.WriteLine("开始组装『{0}』电脑:", Band); foreach (var part in assemblyParts) { Console.WriteLine(string.Format("组装『{0}』;", part)); } Console.WriteLine("组装『{0}』电脑完毕!", Band); } } }