关于java:有人识别附加类图中的任何模式/反模式吗?

Does anybody recognize any pattern/antipattern in attached class diagram?

ALT文字img8.imageshack.us http://///classdiagram.png 8558 img8

短描述:我有一个正常的怀疑是否它是实现两个接口和抽象类AbstractCrudDaoImpl这是继承从父(ReadOnlyDao一样)。


我会对readonlydao这个名字例外——它意味着任何实现它的东西也是只读的,这显然是不真实的。

我建议把它改成可读的DAO。对于abstractreadabledaoimpl,同上。


除非在AbsractReadOnlyDaoImpl中定义了一些特殊的方法,而这些方法不在ReadOnlyDao接口中,否则特定的继承几乎是无用的。

否则,看起来不错。


似乎很奇怪。克鲁达奥应该访问readonlydao而不是abstractreadonlydao吗?起初,AbstractReadOnlyDao访问AbstractReadOnlyDaoImpl似乎很奇怪,但第二次看,似乎还可以。


我觉得这个设计很合理。

通过查看你的类图,我能够清楚地了解每个参与者。我认为这是一个很好的信号-这意味着角色之间有明显的分离。

事实上,CrudDao扩展了ReadOnlyDao对我来说是完全合理的。读写操作是只读操作的超集;如果您可以使用只读接口执行某些操作,那么您也应该能够使用读写接口执行此操作—这正是继承所实现的。


你可以把这个问题分成两部分:

  • 从另一个接口派生一个接口是否正常且有意义?
  • 有一个抽象类和一个模拟相同概念的接口是正常的吗?

第一个问题很容易回答:是的,在某些类只需要"核心"接口,而其他类处理更丰富的接口的情况下,这是有意义的。

我以前在这里讨论过的另一个问题。