简短摘要:当您想要预定义类的某些实例化时,创建子类还是创建工厂更好?
问题背景
我有一个视图助手类 MyWebserviceUrl ,它有一堆属性。它的目的是生成一个url。
我希望能够拥有这个类的预配置实例,这样我就不必为同一个家族做这么多setThis()
如果setThat()
我MyWebserviceUrl
有一个类型的 url a
,我想得到一个带有一些的实例与此类型有关的默认值a
。
我可以MyWebserviceUrl
像这样通过子类解决这个问题
UrlFamFoo extends MyWebserviceUrl {…}
UrlFamBar extends MyWebserviceUrl {…}
我还可以创建一个工厂,给定一个像“Foo”这样的参数可以MyWebserviceUrl
为我配置一个对象。
我的问题:
- 我应该走子类路线还是工厂路线?
- 如果您建议工厂,这应该是
- 单独的视图助手,
- 普通工厂类,或
factory($name)
中的方法MyWebserviceUrl
?
旁注:我目前正在 Zend Framework 中开发,但我认为这个问题更笼统。
edit1 →<em>更具体地说:我只需要将一些属性设置为默认值,而其余的则需要即时设置。