生成器模式(Builder)将一个复杂对象的创建与表示分离开,对其复杂的创建过程和部件进行解耦,使同样的创建过程可以创建不同的表示.
如果当你的对象的创建过程可以和每个部件的创建过程分离开,并且可能通过组装不同的创建部件可以生成不同的对象.就可以使用生成器模式.
如同生成一个汽车,你可以通过不同的组装方式来创建一个不同类型的汽车.
public interface IBuilder
{
void BuildEngine(); // 发动机
void BuildTyre(); // 轮胎
void BuildSteer(); // 方向盘
} // interface IBuilder
public class Builder : IBuilder
{
public void BuildEngine() { }
public void BuildTyre() { }
public void BuildSteer() { }
public Product GetProduct()
{
return new Product();
}
} // class Builder
public class Product { }
public class Director
{
private IBuilder m_builder;
public Director(IBuilder builder)
{
m_builder = builder;
}
public void CreateModel()
{
m_builder.BuildEngine();
m_builder.BuildTyre();
m_builder.BuildSteer();
}
public void CreateCar()
{
m_builder.BuildTyre();
m_builder.BuildSteer();
}
} // class Director
// 生产模型汽车
IBuilder builder = new Builder();
Director director = new Director(builder);
director.CreateModel();