您好我想建立一個流暢的接口來創建一個對象某種工廠或生成器。如何在流式接口的方法調用中構建一個序列
我知道我必須「返回這個」才能使方法可鏈接。
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本身所具有的流暢API像eBuilder.Cylinders(12).WithPistons()....
纔有可能有這樣的事情
Car c = builder.AddFrame(fBuilder).AddWheels(wBuilder).AddEngine(x=>x.WithCylinders(12).WithPistons()).BuildCar();
總而言之,如何構造流暢接口的流程以及如何嵌套流利接口?
我想創建一個流利的API一個像流利的nhibernate一樣的costum dsl ...更像鏈接方法 – silverfighter 2011-02-24 22:31:26