替代文字 http://img8.imageshack.us/img8/8558/classdiagram.png
简短描述:我怀疑AbstractCrudDaoImpl
实现从同一个父级(ReadOnlyDao
)继承的接口和抽象类是否正常。
替代文字 http://img8.imageshack.us/img8/8558/classdiagram.png
简短描述:我怀疑AbstractCrudDaoImpl
实现从同一个父级(ReadOnlyDao
)继承的接口和抽象类是否正常。
除非您定义了一些AbsractReadOnlyDaoImpl
不在ReadOnlyDao
接口中的特殊方法,否则该特定继承几乎没有用。
否则,看起来不错。
我会反对 ReadOnlyDao这个名字——它暗示任何实现它的东西也是只读的,这显然是不真实的。
我建议将其更改为ReadableDao。AbstractReadableDaoImpl同上。
你可以把这个问题一分为二:
第一个问题很容易回答:是的,这在您有一些只需要“核心”接口的类但其他类处理更丰富的接口的情况下是有意义的。
我之前在这里处理过的另一个问题。
这个设计对我来说似乎很合理。
通过查看您的班级图,我能够清楚地了解每个参与者。我认为这是一个好兆头——这意味着角色分工明确。
CrudDao
扩展的事实ReadOnlyDao
对我来说非常有意义。读写操作是只读操作的超集;如果你可以用只读接口做某事,你也应该可以用读写接口做这件事——这正是继承所实现的。
看起来很奇怪。CrudDao 是否应该访问 ReadOnlyDao 而不是 AbstractReadOnlyDao?起初,AbstractReadOnlyDao 访问 AbstractReadOnlyDaoImpl 似乎很奇怪,但第二次看似乎没问题。