这篇文章介绍了C#通过Builder模式造车的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
Builder模式也可以造车。
对于Builder模式来说,首相要把要造的车确定下来:
public class Car
{
public string Model { get; set; }
public string Engine { get; set; }
public string Transmission { get; set; }
public string Body { get; set; }
public int Doors { get; set; }
public List<string> Accessories { get; set; }
public Car()
{
Accessories = new List<string>();
}
public void ShowCarInfo()
{
Console.WriteLine(Model);
Console.WriteLine(Engine);
Console.WriteLine(Body);
Console.WriteLine("门的数量:" + Doors);
Console.WriteLine(Transmission);
Console.WriteLine("配置为:");
foreach (var accessory in Accessories)
{
Console.WriteLine("\t{0}", accessory);
}
}
}
这个Car可以交给Builder1也可以交给Builder2,等等,但首先需要提炼出Builder们的一个抽象类。这个抽象Builder可以设置和获取Car,并提供生产Car各个部件的抽象方法。
public abstract class CarBuilder
{
protected Car _car;
public Car GetCar()
{
return _car;
}
public void SetCar()
{
_car = new Car();
}
public abstract void SetModel();
public abstract void SetEngine();
public abstract void SetTransmission();
public abstract void SetBody();
public abstract void SetDoors();
public abstract void SetAccessories();
}
然后,就需要一个具体的Builder来派生抽象Builder。
public class BuilderOne : CarBuilder
{
public override void SetEngine()
{
_car.Engine = "发动机1";
}
public override void SetModel()
{
_car.Model = "型号1";
}
public override void SetTransmission()
{
_car.Transmission = "变速1";
}
public override void SetBody()
{
_car.Body = "SUV";
}
public override void SetAccessories()
{
_car.Accessories.Add("内饰");
_car.Accessories.Add("外饰");
}
public override void SetDoors()
{
_car.Doors = 6;
}
}
这个抽象Builder的派生类可能有很多,所以需要一个管理这些派生Builder的类,用来决定到底选用哪个Builder来生产。
public class BuilderManager
{
private readonly CarBuilder _carBuilder;
public BuilderManager(CarBuilder carBuilder)
{
_carBuilder = carBuilder;
}
public void BuildCar()
{
_carBuilder.SetCar();
_carBuilder.SetModel();
_carBuilder.SetEngine();
_carBuilder.SetBody();
_carBuilder.SetDoors();
_carBuilder.SetTransmission();
_carBuilder.SetAccessories();
}
public Car GetCar()
{
return _carBuilder.GetCar();
}
}
在客户端,如果需要造车,就找Builder的管理类,通过它的构造函数传入具体的Builder。
class Program
{
static void Main(string[] args)
{
var builderManager = new BuilderManager(new BuilderOne());
builderManager.BuildCar();
var car = builderManager.GetCar();
car.ShowCarInfo();
Console.ReadKey();
}
}
抽象工厂和Builder模式都可以造车,但两者有也许的不同:
- 抽象工厂模式相当于为车找了一个专属工厂,要求工厂只能造这种类型的车
- Builder模式相当于为车找不同的工厂,不同的工厂生产出来的车型都不一样
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对得得之家的支持。如果你想了解更多相关内容请查看下面相关链接
织梦狗教程
本文标题为:C#通过Builder模式造车


基础教程推荐
猜你喜欢
- C# 解析XML和反序列化的示例 2023-04-14
- C#中的Linq to JSON操作详解 2023-06-08
- C#获取指定目录下某种格式文件集并备份到指定文件夹 2023-05-30
- C#中 Json 序列化去掉null值的方法 2022-11-18
- c# – USING块在网站与Windows窗体中的行为不同 2023-09-20
- C#通过标签软件Bartender的ZPL命令打印条码 2023-05-16
- Unity shader实现高斯模糊效果 2023-01-16
- 实例详解C#实现http不同方法的请求 2022-12-26
- C#调用摄像头实现拍照功能的示例代码 2023-03-09
- Unity 如何获取鼠标停留位置下的物体 2023-04-10