代替テキスト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はAbstractReadOnlyDaoではなくReadOnlyDaoにアクセスする必要がありますか?最初は、AbstractReadOnlyDaoがAbstractReadOnlyDaoImplにアクセスしているように見えましたが、2番目の外観では問題ないようです。
この質問を2つに分けることができます。
最初の質問に答えるのは簡単です。はい、これは、「コア」インターフェイスのみを必要とするクラスがいくつかあるが、よりリッチなインターフェイスを処理する他のクラスがある場合に意味があります。
私が以前ここで扱ったもう1つの質問。
デザインは私には非常に合理的です。
あなたのクラス図を見て、各参加者について明確なアイデアを得ることができました. これは良い兆候だと思います。つまり、役割が明確に分離されているということです。
CrudDao
拡張するという事実はReadOnlyDao
、私にとって完全に理にかなっています。読み書き操作は、読み取り専用操作のスーパーセットです。読み取り専用インターフェイスで何かを実行できる場合は、読み取り/書き込みインターフェイスでも実行できるはずです。これはまさに継承が達成することです。