Java 有人能识别所附类图中的任何模式/反模式吗?

Java 有人能识别所附类图中的任何模式/反模式吗?,java,design-patterns,oop,anti-patterns,Java,Design Patterns,Oop,Anti Patterns,简短描述:我怀疑AbstractCrudDaoImpl实现从同一父级继承的接口和抽象类(ReadOnlyDao)是否正常 除非您在AbsractReadOnlyDaoImpl中定义了一些特殊的方法,而该方法不在ReadOnlyDao接口中,否则特定的继承是毫无用处的 否则,看起来很好。您可以将此问题分为两部分: 从另一个接口派生一个接口是否正常且有意义 拥有一个抽象类和一个对同一概念建模的接口是正常的吗 第一个问题很容易回答:是的,在有些类只需要“核心”接口,而其他类处理更丰富的接口的情况下


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

除非您在
AbsractReadOnlyDaoImpl
中定义了一些特殊的方法,而该方法不在
ReadOnlyDao
接口中,否则特定的继承是毫无用处的


否则,看起来很好。

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

  • 从另一个接口派生一个接口是否正常且有意义
  • 拥有一个抽象类和一个对同一概念建模的接口是正常的吗
第一个问题很容易回答:是的,在有些类只需要“核心”接口,而其他类处理更丰富的接口的情况下,这是有意义的


另一个问题是我之前讨论过的。

这个设计对我来说非常合理

通过看你们的课程图表,我对每个参与者都有了一个清晰的认识。我认为这是一个好迹象——这意味着角色之间存在着明显的分离


事实上,
CrudDao
扩展了
ReadOnlyDao
对我来说非常有意义。读写操作是只读操作的超集;如果你能用只读接口做一些事情,那么你也应该能用读写接口来做——这正是继承所能做到的。

看起来很奇怪。CrudDao应该访问ReadOnlyDao而不是AbstractReadOnlyDao吗?起初,AbstractReadOnlyDao访问AbstractReadOnlyDaoImpl似乎很奇怪,但再看一眼,它似乎没问题。

我会对这个名称表示异议ReadOnlyDao-这意味着实现它的任何东西都是只读的,这显然是不真实的


我建议将其更改为ReadableDao。对于AbstractReadableDaoImpl

也一样,请给我们
ReadOnlyDao
CrudDao
的方法签名。我有标准的CRUD方法。在只读分支中,我有findAll()和findById()方法。在Crud分支中,我有create()、update()和delete()方法?我知道一些软件,但它似乎不太熟悉。此外,应用于类的命名让我想起了构建器模式,但此图看起来不切实际。ReadOnlyDao具有所有具体实现都通用的方法。AbstractReadOnlyDaoImpl实现了它们。AbstractCrudDaoImpl继承了这些实现,因此我避免了“复制和粘贴编程”。为什么“特定继承”毫无用处?啊,我明白你的意思了。你说CrudDao扩展了ReadOnlyDao,这是一种奇怪的继承。你可能是对的,我会考虑一下。很好的建议,我也不喜欢ReadOnlyDao的名字。