我有一个抽象类,表示数据源的连接器,它根据特定条件返回数据对象。根据源,将返回不同的数据对象子类型,但此组件的客户端不关心,甚至不需要知道特定的子类。现在,我的类结构看起来像这样(所有类都缩短为(希望)只显示相关的东西):
public abstract class Connector {
public abstract List<DataObject> getData(Criteria c);
// some concrete (helper) methods
}
public abstract class DataObject {
// some concrete methods and properties common to all subtypes
// some abstract methods to be implemented by subtypes
}
public class ABCConnector extends Connector {
@Override
public List<DataObject> getData(Criteria c) {
// returns List<ABCDataObject>
}
}
public class ABCDataObject extends DataObject {
// subtype-specific methods
}
实际上,当然不仅有ABC
,而且有更多不同类型的连接器和数据对象,因此产生了并行类结构,每个类都有两个类。现在,我在单独的Connector
和DataObject
包中有connectors
和dataobjects
,但我一直在考虑将DataObjects
子类型移到相应的Connector
{1}}子类型,使它们成为(静态)嵌套类。
现在,我的问题是:此类操作的影响(可访问性,重构所需的工作量,代码可读性)是什么?这样做是否明智?将抽象的DataSource
类移到Connector
类中是否明智,尽管客户需要了解它,因为它们可以处理List<DataObject>
个对象?这个结构整体上有缺陷吗?如果是这样,怎么可以改进?
如果您需要任何进一步的信息,或者此问题更适合代码审核,请发表评论。