学习开发模式的最大好处是,当你做什么事情时,知道是否合理,是否高效,就像构建房子时,你该用斧头的时候你不会去用刀,同时在学习底层源码时,能够快速的定位代码,理清头绪,今天要讲的是构造者模式:
该模式之间的对象关系我们可以举现实生活中的例子,比如,客户去买电脑,老板需要员工把组装好的电脑给客户, 这其中对应软件开发的角色就是 老板是指挥者,员工是创建者(创建电脑的),我们来看例子
电脑实体:
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 class Director
{
public void Constructor(Builder builder)
{
builder.BuildPartCPU();
builder.BuildPartMainBoard();
}
}
构建抽象:
public abstract class Builder
{
public abstract void BuildPartCPU();
public abstract void BuildPartMainBoard();
public abstract Computer GetComputer();
}
具体构建者(员工):
public class ConcreteBuilder : Builder
{
Computer computer = new Computer();
public override void BuildPartCPU()
{
computer.Add("CPU");
}
public override void BuildPartMainBoard()
{
computer.Add("MainBoard");
}
public override Computer GetComputer()
{
return computer;
}
}
使用情况:
// 指挥者
Director director = new Director();
//构建者
Builder builder = new ConcreteBuilder();
//指挥构建者做事情,也就是使用构建者
director.Constructor(builder);
//构建者给客户展示他需要的 也就是电脑实体
Computer computer = builder.GetComputer();
computer.Show();