所以我不确定这是否是一个合法的工厂。我看到的大多数工厂在客户端都有这样的东西:
if(//something)
factory = new Type1Factory();
else
factory = new RegularFactory();
然后他们通过像这样创建对象factory.Create();
所以基本上检查你想要哪个工厂的条件就在调用代码中。我宁愿隐藏它并在工厂本身拥有条件,我想这将不再被称为工厂?
像这样的东西:
DateScheduleRequest request = new DateScheduleRequest();
DateScheduleBuilder dateScheduleBuilder = new DateScheduleBuilderFactory(request).Create();
根据发送到工厂构造函数的请求,dateScheduleBuilder
对象基本上属于某种类型。
是否有另一种模式,或者这只是一种做工厂的方式?
基本上,DateScheduleBuilder
它将是一堆其他类型的构建器继承的父类,但我的调用代码知道这个抽象类有一个方法,它不需要知道请求类型,只需知道它的事实需要将其传递给工厂并调用一种方法。