问题描述
电脑城的老板是直接与客户联系的,然而电脑的组装是老板指挥装机人员将电脑的各个组件组装起来,真正创建产品的是电脑城的装机人员。 用代码来实现该逻辑。
代码实现
电脑类
public class Computer
{
private List<string> parts = new List<string>();
public void Add(string part)
{
parts.Add(part);
}
public void Show()
{
Console.WriteLine("电脑开始组装....");
foreach (var part in parts)
{
Console.WriteLine($"组件{part}已装好");
}
Console.WriteLine("电脑组装完成....");
}
}
组装抽象类
public abstract class Builder
{
public abstract void BuildPartCPU();
public abstract void BuildPartMainBoard();
public abstract Computer GetComputer();
}
组装具体类
public class ConcreteBuilder1 : Builder
{
private Computer computer = new Computer();
public override void BuildPartCPU()
{
computer.Add("CPU AMD");
}
public override void BuildPartMainBoard()
{
computer.Add("Main board1");
}
public override Computer GetComputer()
{
return computer;
}
}
public class ConcreteBuilder2 : Builder
{
private Computer computer2 = new Computer();
public override void BuildPartCPU()
{
computer2.Add("CPU Intel");
}
public override void BuildPartMainBoard()
{
computer2.Add("Main board2");
}
public override Computer GetComputer()
{
return computer2;
}
}
指挥者
public class Director
{
public void Construct(Builder builder)
{
builder.BuildPartCPU();
builder.BuildPartMainBoard();
}
}
Main方法
class Program
{
static void Main(string[] args)
{
Director director = new Director();
Builder builder1 = new ConcreteBuilder1();
director.Construct(builder1);
builder1.GetComputer().Show();
Builder builder2 = new ConcreteBuilder2();
director.Construct(builder2);
builder2.GetComputer().Show();
}
}
运行结果
电脑开始组装....
组件CPU AMD已装好
组件Main board1已装好
电脑组装完成....
电脑开始组装....
组件CPU Intel已装好
组件Main board2已装好
电脑组装完成....