|
原帖由 procoder 于 3-8-2009 12:49 发表
其实这是一个refactory的方法,好像叫做replace conditions with sub-class,不一定用patterns。
这是正确的方法。replace conditions with sub-class, 同时,新的sub class采用Ioc方式(基于Factory Pattern构造),尽量保持现有代码的稳定性,扩展而不修改。
在这个场合里,新增加一个Frame的子类去体现新Frame的特征,并增加一个FrameImpl的子类去体现新Frame的行为,然后通过Factory模式构造这两个类,推荐用Ioc,这样可以不修改Factory类。
如果一定要在4个模式里选一个做答案,最沾边的可能是Builder,但是不完全。
class CarBuilder
public Car build(Frame frame, Tyre tyre, Engine engine)
{
frame.assemble(tyre);
frame.install(enginee);
Car car=new Car();
car.setFrame(frame);
return car;
}
LightFrame,MediumFrame,HeavyFrame extends Frame
TwelveInchTyre,SixInchTyre extends Tyre
PetrolEngine,DieselEngine extends Engine
CarBuilder builder=new CarBuilder ();
Car car=builder.build(new LightFrame(),new TwelveInchTyre(),new PetrolEngine()); |
|