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();
浙公网安备 33010602011771号