私は最近、シンプルなクラスを古いクライアントバージョンのレガシーバージョンと別のインターフェイスに移行した新しいバージョンの2つのバージョンに分割しなければなりませんでした。インターフェイスの実装をオーバーロードしても問題ありませんか?
共通のコードが多いので、私は2つの具体的なクラスを持つ抽象クラスに分割しました。以下のような構成によると:
interface ParentInt {
// Common methods
}
interface ChildIntA extends ParentInt {
// Legacy methods
}
interface ChildIntB extends ParentInt {
// New model methods
}
abstract class AbstParentClass implements ParentInt {
// ...
}
class LegacyConcreteClass extends AbstParentClass implements ChildIntA {
// ...
}
class NewConcreteClass extends AbstParentClass implements ChildIntB {
// ...
}
私は思ったんだけど何AbstParentClassがParentIntと2つの具象クラスはまた、このインターフェイスの子どもたちを実装して実装しているため、私が遭遇する可能性のある落とし穴があるかどうかですか?この状況のためのより良いパターンがあるかもしれませんか?
私のコードは現在、AbstParentClassにこのディレクティブが実装されているかどうかにかかわらずすべて動作します。実際、2つの具象クラスは別々のスレッドで別々にインスタンス化されるため、AbstParentClassは決して他の場所で直接参照されることはありません。
私の状況では、インターフェイスはAPIの一部であり、私のPOVからは変更できません。
互いに拡張しても、必要な数のインターフェイスから継承することができます。ただし、複数のクラスから継承することはできません(ただし、そうしないとうまくいきます:)) – span
子どもの宣言で「AbstParentClassを継承しています」というコメントが誰でもコメントしています。これは明らかに実際のコードではないので、それはちょうど監視だったと確信しています。これらの宣言を追加して、実際の状況について議論することができます。 –
ありがとう、アーネスト、そうです、それは私の見解です。 –