您好我想建立一个流畅的接口来创建一个对象某种工厂或生成器。如何在流式接口的方法调用中构建一个序列
我知道我必须“返回这个”才能使方法可链接。
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