简要说明
生成器模式首先定义一个生成器接口,接口中定义了生成一个产品(或逻辑上可看做整体的产品)各个部分的方法及返回这个产品的方法。不同的生成器可以封装不同的生成算法。客户类在构造函数中通过生成器生成需要的这个产品。生成器适用于待构建对象十分复杂,并根据具体情况存在不同构建算法的场合,使用生成器模式后复杂对象的构建过程与使用过程分离。
结构类图
结构示例代码
/**************************************************
*
- Design Pattren Quick Start
- 02 Builder - 生成器
**************************************************/
namespace DesignPatternQuickStart.Builder
{
///
/// 含有不同模块的产品
///
class Product
{
public int PartA { get; set; }
public object PartB { get; set; }
public string PartC { get; set; }
}
///
/// 生成器接口
///
interface IBuilder
{
void BuildPartA(int partA);
void BuildPartB(object partB);
void BuildPartC(string partC);
Product GetResult();
}
///
/// 具体的生成器
///
class Builder : IBuilder
{
protected Product _product;
public Builder()
{
this._product = new Product();
}
//此处可以使用任意复杂的构造算法构造不同模块
public void BuildPartA(int partA)
{
this._product.PartA = partA;
}
public void BuildPartB(object partB)
{
this._product.PartB = partB;
}
public void BuildPartC(string partC)
{
this._product.PartC = partC;
}
public Product GetResult()
{
return this._product;
}
}
///
/// 生成器的客户类
///
class Client
{
protected Product _product;
public Client()
{
IBuilder buider = new Builder();
buider.BuildPartA(100);
buider.BuildPartB(null);
buider.BuildPartC("abc");
this._product = buider.GetResult();
}
}
}