2013-04-11 58 views
0

我在我的项目中遇到设计相关的困境&如果我能得到一些建议,我会非常感激。有一个POJO大约有20-25个字段&在某些情况下,这个对象根据需要被部分实例化。在我看来这不是一个好的做法&应该避免使用继承或组合。我正在寻找建议,以实现对象创建逻辑(也许是设计模式)的最佳方式,以避免部分实例化。目前,正在使用构建器模式创建对象。
避免部分对象实例化

基本上它是一个swing应用程序。数据从JDialog &的不同字段(20-25)中获取,传递到下一个窗口进行显示以供确认。这些数据使用POJO传递。此POJO目前使用构建器模式实例化。但是我正在寻找一种方法来实现这个POJO没有部分实例化的&在其他情况下只需要传递几个字段。

在此先感谢!

+0

如果你给我们一个例子,这将有所帮助。 – 2013-04-11 07:12:27

回答

1

如果你有一个参数只能在某些条件下使用,而其他条件下不需要,那么你肯定应该做一些重构。例如,尝试Extract Class重构,将一些参数和方法分组。如果您有一些typecodes,表明需要某些参数,请考虑replacing typecode with subclasses 如果typecode在对象的生命周期中没有更改,或者替换t ypecode with state/strategy。然后,将字段和方法从原始类移动到这些新创建的类。

我建议您阅读Martin Fowler的“重构”一书。这真是太棒了,非常有帮助。

构建器模式可以,但是您可能想要为对象创建实现工厂方法模式。

+0

谢谢安德烈。这些是一些非常有用的链接。 您可以请举一个例子,说明当对象有20-25个成员时,工厂方法模式实现将如何帮助阻止部分对象的创建。 – mindreader 2013-04-17 05:47:29

+1

@mindReader,当你使用工厂方法时,基本上给你的类的使用者一个有限的对象创建选项集。例如,如果您的对象具有必须是字段的属性以及仅在某些条件下才归档的多组属性,则可以为每个条件实施一个工厂方法,从而确保以有效状态创建对象。然而,使用工厂方法的更有效的方法是生成父类的一些子类(如果事先做了一些重构并设法将大对象拆分为层次结构)。希望这可以帮助 :) – 2013-04-17 07:04:22