【发布时间】:2012-04-15 10:15:25
【问题描述】:
这是我遇到过几次但还没有找到满意答案的问题。这似乎很愚蠢,但是在谷歌上搜索了一段时间后,我想不出什么好东西。
假设我有一个包含 20 个实例变量的类,每个变量都是可选的(是否会被初始化)。
现在我希望我的构造函数处理所有情况,如果有几个实例变量很好,我可以创建具有不同签名的构造函数,但这里我有 20 个,所以我需要 2 ^20=1,048,576 构造函数来处理所有情况!这似乎......不是很理想,你不同意吗?
因此,由于使用这种蛮力方法,我基本上必须构造 2^n 个构造函数,其中 n 是实例变量的数量,我想找到一种更好的方法。
我已经看到了几个解决这个问题的方法,但我相信它们都是基于数据的假设,但在我的情况下,这些变量中的每一个都可以随机初始化或不随机初始化,我无法在初始化之前知道.
我正在寻找一些可以应用的设计模式或想法,以使我的代码更加...可维护(不用担心,我没有创建 1M+ 构造函数 :)
谢谢。
【问题讨论】:
-
豆模式。构造函数没有参数,所有参数都通过设置器进入。
-
这看起来很傻,我说我有 20 个实例变量,但实际上我有更多,我不想调用 20 个不同的 setter!它在执行过程中可能处于不一致的状态,这似乎是一个非常糟糕的解决方案。
-
这也禁止我让我的类不可变。
标签: java design-patterns constructor