4

在 JAVA 类中有 20-25 个实例变量及其 getter/setter 是否是好的 OO 设计?
所有变量都是完全独立的。
由于我在 HBase 中使用一个类,它代表一个列族,因此该列族的每一行可以有不同数量的列。所以我必须把这么多的变量放在那个类中。我很想知道,理想情况下,一个 JAVA 类应该有多少个实例变量和方法?

4

5 回答 5

7

想要做好OO,找类有单一职责就好了。所以如果你有这么多不相关的变量,听起来这个类做的太多了。

这将是一种“代码气味”,您应该考虑将其重新分解为多个类。

太好了,您对好的 OO 感兴趣。我建议阅读重构和代码气味。

http://c2.com/cgi/wiki?OneResponsibilityRule在这里是相对的..

于 2012-06-18T06:39:03.157 回答
4

只要您确保低耦合,这并不重要。将这么多变量分配给一个类可能会增加高耦合的机会。

此外,这可能是班级凝聚力低的标志,而不是理想的高凝聚力情况。

于 2012-06-18T06:33:12.990 回答
2

在 20-25 个实例变量中,您应该在限制范围内,但是,我认为 20-25 可能太多了。您可以尝试将它们分组到不同的类中,并减少实例变量的数量。

通常具有大量实例变量会使类的范围受到限制,这在您希望维护解决方案的情况下并不理想。分解它(如果做得好)应该会增加一些类的可重用性。

于 2012-06-18T06:36:05.480 回答
0

Java 对类可以拥有的 java 实例变量没有任何限制。根据您的要求,您可以拥有任意数量的实例变量。

要记住的关键点是只能通过 getter 和 setter 方法访问。用户不应该能够使用实例变量的名称直接访问它们。

意味着实例变量应该用私有修饰符声明,并且必须提供公共方法来访问和操作它们。

于 2012-06-18T06:37:34.280 回答
0

好吧,如果你的类代表数据持有者对象,那么就可以了。这种设计在 java bean 中很常见。

例如,如果你有一个代表公司员工的类,那么如果一个员工有 20-25 个属性,这是很常见的。

但是,如果您将这么多的实例变量与业务方法混为一谈,那么您将面临困难,因为您将无法获得集中和集中的业务组件。

为了使其在架构方面更好,您可以考虑继承(子类)或组合(内部类)

于 2012-06-18T06:53:18.453 回答