我有一个来自GUI的对象guiObject
。根据其数据字段,我需要实例化适当类的domainObject
。它可以是DomainClassA
或DomainClassB
。DomainClassA
具有一个Integer构造器参数intParamA
(来自guiObject.fieldA
)。DomainClassB
具有一个Integer构造器参数intParamB
(来自guiObject.fieldB
)。
为了解决这个问题,我制作了AbstractFactory
,它从guiObject
获取必填字段,并用DomainClassAFactory
中的适当字段实例化DomainClassBFactory
或GuiClass
并对其进行重新调整。反过来,这些工厂create()
中的任何一个都正确地实例化了domainObject
。
但是现在,根据guiObject.fieldC
我需要在实例化intParamA
之前更改intParamB
和domainObject
(即减少1)。为此,我必须为每个DomainClass
的每种不同类型的“参数更改”创建单独的工厂,然后创建产生正确工厂的单独的抽象工厂。这听起来很丑,看起来很丑。
什么是正确的设计?
最佳答案
除非需要所有这些层,否则请使用工厂查询guiObject
并返回正确的类型。
过度分析会导致太多东西,而大多数应用程序根本不需要这些东西。仅在绝对必要时才添加其他抽象层。他们通常不是。