你有一些对象只包含静态数据和静态方法。让我们称之为DataHoldingClass
。您需要这样做,因为通过编写object.VALUE
和object.method()
,可以在代码中轻松访问数据。这一切都只是为了懒惰和简单。我们都同意这很重要。
但有些static method()
在您的代码中很常见,因此您希望在DataHoldingClass
之间共享它们。 OOP方法是定义一些abstract class BaseClass
,将常用方法放在那里,然后让DataHoldingClass extends BaseClass
。
但这是不可能的,因为每个DataHoldingClass
都有不同的值,您无法从abstract class
获得这些值。如果您在摘要中定义public static final String VALUE
,则所有子类只有一个共享VALUE
,如果您在每个VALUE
中定义单独的DataHoldingClass
,则无法创建static String method() { return NAME; }
在抽象类中,因为NAME
尚未在抽象中定义。
使其工作的唯一方法是创建非静态的值和方法。然后,这些方法将继承自abstract class BaseClass
,并将使用DataHoldingClass
个特定值。但是现在每次要访问数据时都必须创建新的类实例。嗯,我们已经从飞溅到泥泞。
但我们可以解决它,对吗?只需创建一些对象来保存实例或使DataHoldingClass
成为单例。但这似乎没有那么好。
另一种方法可能是通过参数将值传递给静态方法,但是使用与参数相同的对象值调用某些对象方法似乎很奇怪并且记住,我们这样做是因为懒惰,所以我们不想写对象名两次。
您的存储此类数据对象的方式是什么?目前,我正在使用单身人士,但我觉得必须有更好的方法。任何的想法?
使用示例:
让我们为数据库中的每个表创建这样的DataHoldingClass
。每个表都有自己的常量,如COLUMN_ID = "_id"
和TABLE_NAME = "evilTable"
,每个表都有insert()
或update()
等方法。每个表的方法都相同,但对于某些表可以覆盖。常数是不同的。我想将它定义为常量,因为它可以像Table.TABLE_NAME
等轻松访问。