我模拟基于DAO模式的持久层,我有相关的使用Genrics和接口继承的一些疑问。
我开始说,基本的CRUD操作是所有的持久化实体一样的,所以我决定要提供使用泛型一个基本的DAO接口。 然后会有继承的基本合同其他接口以及与将通过具体实施管理的实体其他一些具体方法。
这可能听起来复杂,但实际上很简单。 在Java中它会是这样的:
public interface BasicDao<T> {
public T insert(T dataObject);
public T update(T dataObject);
public Boolean delete(T dataObject);
public T getUnique(BigInteger dataObjectId);
public List<T> getAll();
}
public interface IModulesDao extends IBasicDao<IModule> {
public IModule getModuleByCode(String code);
}
正如你所看到IModulesDao
将单个方法的基本合同,但具体的实现还是要满足整个合同,这是做这一切的想法。
现在,我读过UML类图和泛型如何在泛型UML模型也是这个例子 。 据称,使用buond元素不大于子类型相同,我们不允许任何补充合同。 所以,据我了解,我必须创建中间类型,终于让我IModulesDao
接口。
这听起来概念上的权利,但我不知道如果因为我的情况下,配合IModulesDao
只是一个扩展或子接口IBasicDao
和没有意义的有一个中间亚型要继承。 恕我直言,它只是噪音添加到图表的任何好处。
这就是我现在所拥有的,但不认为是完全正确的:
能否请你引导我如何这种情况下,模型的正确方向?