建造者模式
定义:将一个复杂对象的创建与表示分离 使同样的构建过程可以创建不同的表示。
组成角色
Builder:抽象建造者 创建一个产品Product对象的各个部件指定抽象接口
ConcreteBuilder:具体建造者 实现Builder接口 实现具体构造与装配方法 定义创建的复杂对象
Product:产品 包含多个组成部件
Director:指挥者 负责安排复杂对象的建造次序
示例代码
public class Product
{
private string partA;
private string partB;
private string partC;
public string PartA
{
get { return partA; }
set
{
partA = value;
}
}
public string PartB
{
get { return partB; }
set
{
partB = value;
}
}
public string PartC
{
get { return partC; }
set
{
partC = value;
}
}
}
public abstract class Builder
{
//创建产品对象
protected Product product = new Product();
public abstract void BuildPartA();
public abstract void BuildPartB();
public abstract void BuildPartC();
public Product GetResult()
{
return product;
}
}
class ConcreteBuilder1 : Builder
{
public override void BuildPartA()
{
product.PartA="A1";
}
public override void BuildPartB()
{
product.PartB = "B1";
}
public override void BuildPartC()
{
product.PartC = "C1";
}
}
class Director
{
private Builder builder;
public Director(Builder builder)
{
this.builder = builder;
}
public void SetBuilder(Builder builder)
{
this.builder = builder;
}
//产品构建与组装方法
public Product Construct()
{
builder.BuildPartA();
builder.BuildPartB();
builder.BuildPartC();
return builder.GetResult();
}
}
建造者调用
Builder builder = new ConcreteBuilder1();
Director director = new Director(builder);
Product product = director.Construct();