您的位置:首页 > 其它

设计模式-建造者模式

2016-03-31 10:34 239 查看
建造者模式可以让客户端不必知道产品的内部组成细节,只要知道产品类型即可创建出产品,将产品的使用和创建过程解耦,使得相同创建过程可以创建不同的产品对象

建造者模式一共有4个角色:

复杂产品类
抽象创建者
具体创建者
指挥者

//建造者模式

//复杂产品
public class Car
{
private string Wheel;
private string Bulb;
private string Gps;
public string GetWheel() { return Wheel; }
public void SetWheel(string Wheel) { this.Wheel= Wheel; }
public string GetBulb() { return Bulb; }
public void SetBulb(string Bulb) { this.Bulb = Bulb; }
public string GetGps() { return Gps; }
public void SetGps(string Gps) { this.Gps = Gps; }
}

//抽象创建者
public abstract class ACarBuilder
{
protected Car car=new Car();
public abstract void BuildWheel();
public abstract void BuildBulb();
public abstract void BuildGps();
public Car CreateCar()
{
return car;
}
}

//具体创建者(大众汽车)
public class VWCarBuilder : ACarBuilder
{
public override void BuildBulb()
{
car.SetBulb("普通白炽灯");
}

public override void BuildGps()
{
car.SetBulb("普通Gps");
}

public override void BuildWheel()
{
car.SetBulb("公路轮胎");
}

}

//具体创建者(宝马汽车)
public class BMWCarBuilder : ACarBuilder
{
public override void BuildBulb()
{
car.SetBulb("太阳能环保护眼灯泡");
}

public override void BuildGps()
{
car.SetGps("高级Gps(支持电子罗盘)");
}

public override void BuildWheel()
{
car.SetWheel("高性能轮胎");
}

}

//指挥者
public class CarDirector
{
public static Car Construct(ACarBuilder builder)
{
//指导各部件的创建顺序
builder.BuildBulb();
builder.BuildWheel();
builder.BuildGps();
return builder.CreateCar();
}
}

class Program
{
static void Main(string[] args)
{
//建造者模式要求创建的产品具有较多共同点,如果组成部分相差很大,则不适合
//主要适用于:
//1.产品对象有复杂的内部结果,包含多个属性,
//2.产品内部的属性相互依赖,需要制定其生成顺序(通过创建者实现)
Car car = CarDirector.Construct(new BMWCarBuilder());//可更改为从读取配置文件
Console.WriteLine("Bulb=>" + car.GetBulb());
Console.WriteLine("Gps=>" + car.GetGps());
Console.WriteLine("Wheel=>" + car.GetWheel());
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: