内部类和并行类结构

时间:2015-03-11 18:56:27

标签: java polymorphism inner-classes

我有一个抽象类,表示数据源的连接器,它根据特定条件返回数据对象。根据源,将返回不同的数据对象子类型,但此组件的客户端不关心,甚至不需要知道特定的子类。现在,我的类结构看起来像这样(所有类都缩短为(希望)只显示相关的东西):

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,而且有更多不同类型的连接器和数据对象,因此产生了并行类结构,每个类都有两个类。现在,我在单独的ConnectorDataObject包中有connectorsdataobjects,但我一直在考虑将DataObjects子类型移到相应的Connector {1}}子类型,使它们成为(静态)嵌套类。

现在,我的问题是:此类操作的影响(可访问性,重构所需的工作量,代码可读性)是什么?这样做是否明智?将抽象的DataSource类移到Connector类中是否明智,尽管客户需要了解它,因为它们可以处理List<DataObject>个对象?这个结构整体上有缺陷吗?如果是这样,怎么可以改进?

如果您需要任何进一步的信息,或者此问题更适合代码审核,请发表评论。

0 个答案:

没有答案