4.建造者模式
class Customer
{
static void Main(string[] args)
{
Director director = new Director();
Builder b1 = new ConcreteBuilder1();
Builder b2 = new ConcreteBuilder2();
director.Construct(b1);// 老板叫员工去组装第一台电脑
Computer computer1 = b1.GetComputer();// 组装完,组装人员搬来组装好的电脑
computer1.Show();
director.Construct(b2);// 老板叫员工去组装第二台电脑
Computer computer2 = b2.GetComputer();
computer2.Show();
Console.Read();
}
}
public class Director
{
public void Construct(Builder builder)// 组装电脑
{
builder.BuildPartCPU();
builder.BuildPartMainBoard();
}
}
public class Computer// 电脑类
{
private IList<string> parts = new List<string>();
public void Add(string part)
{
parts.Add(part);
}
public void Show()
{
Console.WriteLine("电脑开始在组装.......");
foreach (string part in parts)
{
Console.WriteLine("组件"+part+"已装好");
}
Console.WriteLine("电脑组装好了");
}
}
public abstract class Builder// 抽象建造者
{
public abstract void BuildPartCPU();// 装CPU
public abstract void BuildPartMainBoard();// 装主板
public abstract Computer GetComputer();// 获得组装好的电脑
}
public class ConcreteBuilder1 : Builder
{
Computer computer = new Computer();
public override void BuildPartCPU()
{
computer.Add("CPU1");
}
public override void BuildPartMainBoard()
{
computer.Add("Main board1");
}
public override Computer GetComputer()
{
return computer;
}
}
public class ConcreteBuilder2 : Builder
{
Computer computer = new Computer();
public override void BuildPartCPU()
{
computer.Add("CPU2");
}
public override void BuildPartMainBoard()
{
computer.Add("Main board2");
}
public override Computer GetComputer()
{
return computer;
}
}