Person を表現したいとしましょう
public interface Person {
String getFirstName();
String getLastName();
}
これはJPAで実装されています(コードはかなり平凡なので見逃しています)
今、私はモデルを持ちたいと思っています。そのインターフェースは、セッターメソッドを備えた個人インターフェースの拡張です
public interface PersonModel extends Person {
void setFirstName(String firstName);
void setLastName(String lastName);
}
そして、Model インターフェースの具体的な実装を実装します (これも非常に平凡なのでスキップしています)。
これを行う中で、「PersonModel は Person ではない」ため、Person から拡張された PersonModel はあまり意味がないことに気付きました。
PersonModel を Person にキャストすることも「正しく」ありません。
これを実装する正しい方法は何ですか - PersonModel は Person から継承してメソッドを再定義することはできませんでしたが、それは余分なメンテナンスを意味します。
メソッドを別の基本インターフェイス -> PersonBase(?) に抽出し、そこから Person (他のメソッドは定義されていません) と PersonModel の両方を拡張できます。
上記のパスをたどる場合、基本インターフェイスに名前を付ける最良の方法は何ですか?
私がインターフェイスを使用している主な理由の 1 つは (すべてがどのように機能し、どのように連携するかを考えるのに役立つという事実は別として)、さまざまな実装レイヤー (JPA2/NoSQL ドライバーなど) を簡単に作成できるようにするためです。
これは使用されている実際のコードではないため、構文エラー/タイプミスを許してください-この質問の目的のために書きました。
考え/指導/アドバイスをいただければ幸いです。