有没有人认识到附加类图中的任何模式/反模式?

时间:2009-12-25 16:37:12

标签: java design-patterns oop anti-patterns

alt text http://img8.imageshack.us/img8/8558/classdiagram.png

简短描述:我怀疑AbstractCrudDaoImpl是否实现了从同一父(ReadOnlyDao)继承的接口和抽象类是否正常。

5 个答案:

答案 0 :(得分:2)

除非AbsractReadOnlyDaoImpl中定义的某个特殊方法不在ReadOnlyDao接口中,否则该特定继承几乎没用。

否则,看起来很好。

答案 1 :(得分:2)

我会将名称 ReadOnlyDao 视为异常 - 它暗示任何实现它的东西也是只读的,这显然是不真实的。

我建议将其更改为 ReadableDao 。同上 AbstractReadableDaoImpl

答案 2 :(得分:1)

您可以将此问题分成两部分:

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

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

我之前处理的另一个问题here

答案 3 :(得分:1)

这个设计对我来说似乎很合理。

通过查看您的班级图,我能够清楚地了解每个参与者。我认为这是一个好兆头 - 这意味着角色明显分离。

CrudDao延伸ReadOnlyDao这一事实对我来说非常有意义。读写操作是只读操作的超集;如果你可以用只读接口做一些事情,你应该能够用读写接口来做 - 这正是继承所实现的。

答案 4 :(得分:1)

看起来很奇怪。 CrudDao应该访问ReadOnlyDao而不是AbstractReadOnlyDao吗?起初看起来很奇怪AbstractReadOnlyDao正在访问AbstractReadOnlyDaoImpl,但第二次看起来似乎没问题。