Product类------产品类,由多个部件组成。
cs
class Product
{
IList<string> parts = new List<string>();
//添加产品部件
public void Add(string part)
{
parts.Add(part);
}
public void Show()
{
foreach (string part in parts)
{
Debug.Log("产品:"+part);
}
}
}
Builder类------抽象建造者类,确定产品由两个部件Part A和Part B组成,并声明一个得到产品建造
后结果的方法GetResult。
cs
abstract class Builder
{
public abstract void BuildPartA();
public abstract void BuildPartB();
public abstract Product GetResult();
}
Concrete Builder类,具体建造者类。
cs
class ConcreteBuilder : Builder
{
private Product product =new Product();
public override void BuildPartA()
{
product.Add("部件x");
}
public override void BuildPartB()
{
product.Add("部件y");
}
public override Product GetResult()
{
return product;
}
}
class ConcreteBuilder2 : Builder
{
private Product product = new Product();
public override void BuildPartA()
{
product.Add("部件x2");
}
public override void BuildPartB()
{
product.Add("部件y2");
}
public override Product GetResult()
{
return product;
}
}
Director类指挥者类。
cs
class Director
{
public void Construct(Builder builder)
{
builder.BuildPartA();
builder.BuildPartB();
}
}
客户端代码,客户不需要知道具体建造过程。
cs
private void Start()
{
Director director = new Director();
Builder builder = new ConcreteBuilder();
Builder builder1 = new ConcreteBuilder2();
director.Construct(builder);
Product p = builder.GetResult();
p.Show();
director.Construct(builder1);
Product p1 = builder1.GetResult();
p1.Show();
}
建造者模式 是在当 创建复杂对象的算法 应该 独立于该对象的组成部分 以及 它们的装配方
式 时适用的模式。