好了朋友们,
这是一个原则性问题,而不是事实问题。
我有一个在客户端和服务器上都使用的数据结构。
但是,在服务器端,我想要从某种数据存储创建客户端的功能(目前 SQL,它曾经是序列化数据,但没关系)。
最初我有一个名为“Datastore”之类的巨型类,它具有用于检索任何存储对象的静态方法。
虽然并不可怕,但这并不完全是面向对象的,而且也不完全是可扩展的。
所以我考虑将这些静态方法移动到数据结构本身。但是,这意味着共享客户端库知道如何从我的数据存储中检索对象——这有点傻。
因此,我现在为新数据存储包中的每个对象创建新类,每个类都包含用于从数据存储中检索一个对象的静态方法。
我的问题是,我如何表示这些数据管理器类和它们检索的对象之间的关系?
从功能上来说,没关系。静态方法工作正常。但我想向未来的我和其他未来的开发人员表明,数据检索器类和对象类是紧密相连的。
我的第一个想法是让数据检索器扩展数据结构。但是,这将需要声明默认构造函数并暗示可以实例化该类——它可以,但你为什么要实例化?
我的第二个想法是让数据检索器扩展数据结构,但要抽象。这将标志着与其他开发人员的紧密关系,并清楚地表明只添加了新方法,没有新字段。
但是,用抽象类扩展具体类似乎很奇怪,Java 仍然让我创建默认构造函数。