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);
}
}
}