生成器计划形式(Builder Pattern)是一种创建型计划形式,它供给了一种创建复杂东西的方法,容许客户端经由过程指定差别范例的生成器来创建差别范例的东西,同时暗藏了东西的具体创建过程。这种形式特别实用于那些须要分步调创建东西,且东西的构造过程较为复杂或涉及多个参数的场景。
生成器形式的核心头脑是将一个复杂东西的构建与它的表示分别,使得同样的构建过程可能创建差其余表示。它经由过程以下方法实现:
以下是一个简单的生成器形式示例,以构建一个复杂东西,以汽车为例。
// 定义汽车接口
public interface ICar
{
void setWheel(string wheel);
void setEngine(string engine);
void setBrake(string brake);
}
// 实现汽车接口的具体汽车类
public class Car : ICar
{
public string Wheel { get; set; }
public string Engine { get; set; }
public string Brake { get; set; }
public void setWheel(string wheel)
{
Wheel = wheel;
}
public void setEngine(string engine)
{
Engine = engine;
}
public void setBrake(string brake)
{
Brake = brake;
}
}
// 定义生成器接口
public interface ICarBuilder
{
ICar Build();
ICarBuilder SetWheel(string wheel);
ICarBuilder SetEngine(string engine);
ICarBuilder SetBrake(string brake);
}
// 实现生成器接口的具体生成器类
public class CarBuilder : ICarBuilder
{
private ICar car;
public CarBuilder()
{
car = new Car();
}
public ICarBuilder SetWheel(string wheel)
{
car.Wheel = wheel;
return this;
}
public ICarBuilder SetEngine(string engine)
{
car.Engine = engine;
return this;
}
public ICarBuilder SetBrake(string brake)
{
car.Brake = brake;
return this;
}
public ICar Build()
{
return car;
}
}
// 客户端代码
public class Program
{
public static void Main()
{
ICarBuilder builder = new CarBuilder();
ICar car = builder.SetWheel("18 inch")
.SetEngine("V8")
.SetBrake("Disk")
.Build();
Console.WriteLine("Car built with wheel: {0}, engine: {1}, brake: {2}", car.Wheel, car.Engine, car.Brake);
}
}
生成器计划形式是一种非常实用的计划形式,它可能帮助我们轻松实现代码复用与高效开辟。经由过程封装复杂的构建过程,供给抽象接口,实现具体生成器,客户端利用生成器等方法,生成器形式可能进步代码的可复用性、可保护性跟可扩大年夜性。