我有一个来自GUI的对象guiObject。根据其数据字段,我需要实例化适当类的domainObject。它可以是DomainClassADomainClassB

DomainClassA具有一个Integer构造器参数intParamA(来自guiObject.fieldA)。

DomainClassB具有一个Integer构造器参数intParamB(来自guiObject.fieldB)。

为了解决这个问题,我制作了AbstractFactory,它从guiObject获取必填字段,并用DomainClassAFactory中的适当字段实例化DomainClassBFactoryGuiClass并对其进行重新调整。反过来,这些工厂create()中的任何一个都正确地实例化了domainObject

但是现在,根据guiObject.fieldC我需要在实例化intParamA之前更改intParamBdomainObject(即减少1)。为此,我必须为每个DomainClass的每种不同类型的“参数更改”创建单独的工厂,然后创建产生正确工厂的单独的抽象工厂。这听起来很丑,看起来很丑。

什么是正确的设计?

最佳答案

除非需要所有这些层,否则请使用工厂查询guiObject并返回正确的类型。

过度分析会导致太多东西,而大多数应用程序根本不需要这些东西。仅在绝对必要时才添加其他抽象层。他们通常不是。

09-06 08:04