1、概述:

  举个很形象的例子,生产汽车,不同厂家有不同的建造模式,宝马公司有自己的组装汽车的模式,奔驰公司也有自己独特的组装模式,对于客户来说,选择什么品牌的汽车,就是选择哪家公司的生产汽车的模式,所有厂家都有一个生产汽车的方法,我们抽象成一个建造者基类,然后,出售汽车的代理商,相当于一个帮助用户选择不同厂家的汽车的一个角色,客户通过这个代理商就可以买到自己需要的汽车。

2、定义:

  将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

3、角色:

  • 建造者基类:不同建造者的基类。
  • 指挥者:引用建造者,建造不同的产品。(相当于汽车代理商)
  • 具体建造者:不同方式的构建产品的类。(相当于具体的汽车生产厂家,如宝马,奔驰)
  • 客户端:客户端通过指挥者调用具体的建造方式。(客户,买汽车的人)

4、UML类图:

 

5、示例代码:

产品汽车类:

class Car

{

  public string CarName;

  public void getName(string name)

  {

    this.CarName=name;

  }

  public void show ()

  {

    console.WriteLine("汽车品牌:"+this.CarName);

  }

}

建造基类:

abstract class Builder

{

  public Car car= new Car();

  public abstract void BuildMethod();

  public abstract Car GetCar();

}

具体建造类:

class BMW:Builder

{

  public override void BuildMethod()

  {

    car.getName("宝马");

  }

  public override Car GetCar()

  {

    return car;

  }

}

class BC:Builder

{

  public override void BuildMethod()

  {

    car.getName("奔驰");

  }

  public override Car GetCar()

  {

    return car;

  }

}

指挥者:

class Director

{

  public void construct (Builder builder)

  {

    builder.BuildMethod();

  }

}

客户端调用:

Director director =new Director();

Builder BMW =new BMW();

Builder BC =new BC();

director.construct(BMW);

Car car = BMW.GetCar();

car.show();

 

 

posted on 2013-07-18 10:42  Kelly_HanShuai  阅读(120)  评论(0)    收藏  举报