4

Awith propertyA.aBwith property の2 つのクラスがあるとしますB.b

の一部のプロパティは にA依存していますが、 には依存してB.bA.aませんB.b

の一部のプロパティは にB依存していますが、 には依存してA.aB.bませんA.a

の変更の通知を希望し、Aの変更の通知を希望します。標準のオブザーバー パターンを使用する場合:B.bBA.a

public class A implements B.Observer {..}

public class B implements A.Observer {..}

コンパイラ エラーが発生します。

B (または A) を含む循環継承。

これにより、一般的に無限ループが発生する可能性があることは認識していますが、この場合はそうではありません。たとえば、A.a変更の場合Aは通知しBます。しかし、A.aには影響がないB.bので、 へのリターン通知Aもサイクルもありません。

Java一般的な問題を回避しようとしていることに感謝しますが、これを何らかの形で実装する必要があります。助言がありますか?

4

1 に答える 1

2

各クラスがパブリッシャーとサブスクライバーの両方であるパブリッシュ/サブスクライブ パターンを使用します。

interface Publisher {
    void addSubscriber(Subscriber sub);
}

interface Subscriber {
    void handle (Object event);
}

class A implements Publisher, Subscriber {...}
class B implements Publisher, Subscriber {...}

いくつかの JavaFX 手法を使用してもかまわない場合は、プロパティとバインディングを調べる必要があります。これにより、既に持っているものと同様のものを実現できますが、今回はコンパイラ エラーは発生しません。

于 2015-04-28T16:07:01.643 に答える