こんにちは、ある種のファクトリまたはビルダーのオブジェクトを作成するための流暢なインターフェイスを構築したいと思います。
メソッドを連鎖可能にするために「これを返す」必要があることを理解しています。
public class CarBuilder
{
public CarBuilder()
{
car = new Car();
}
private Car car;
public CarBuilder AddEngine(IEngineBuilder engine)
{
car.Engine = engine.Engine();
return this;
}
public CarBuilder AddWheels(IWheelsBuilder wheels)
{
car.Wheels = wheels.Wheels();
return this;
}
public CarBuilder AddFrame(IFrameBuilder frame)
{
car.Frame = frame.Frame();
return this;
}
public Car BuildCar()
{
return car;
}
}
これで私はそのような車を作ることができました:
Car c = builder.AddFrame(fBuilder).AddWheels(wBuilder).AddEngine(eBuilder).BuildCar();
しかし、私が必要としているのは、特別なシーケンスまたはワークフローです。車輪はフレームの上にしか構築できず、車輪が存在するときにエンジンを構築することができます。したがって、自動車ビルダーのすべての方法を提供する代わりに、フレームのみをビルダーに追加し、ホイールのみをフレームに追加し、その上にエンジンを追加できるようにしたいと考えています...
また、EngineBuilder 自体に eBuilder.Cylinders(12).WithPistons()....
こんなものがあってもいいのだろうか
Car c = builder.AddFrame(fBuilder).AddWheels(wBuilder).AddEngine(x=>x.WithCylinders(12).WithPistons()).BuildCar();
要するに、流暢なインターフェイスの流れを構築する方法と、流暢なインターフェイスをネストする方法は?