R
クラスのすべてのインスタンスを監視するクラスを作成したいS
、つまり、observer-observableパターンを使用しています。クラスのインスタンスを複数持つ必要はありませんR
、私はそれを確信しています。そのため、のすべてのメンバーをR
静的にしました。しかし、これがクラスを設計する正しい方法であるかどうかはわかりません。のpublic void addObserver(Observer o)
メソッドにObservable
は、静的クラスではなくオブジェクトが必要です。R
に渡すことができるようにのみのインスタンスを作成しても大丈夫addObserver
ですか?何らかの形でObservable-Observerパターンに違反していますか?
3 に答える
R
(現時点で)の複数のインスタンスが必要ない場合でも、メンバーR
のみで構成されるように設計する必要はなく、必ずしも設計する必要はありませんstatic
。プログラムの設計では、のインスタンスを1つだけ使用するように指示できますR
。プログラムで強制するためにシングルトンパターンの使用を提案する人さえいます。
ObservableのpublicvoidaddObserver(Observer o)メソッドには、静的クラスではなくオブジェクトが必要です
この句static class
は通常、静的と宣言された内部クラスを参照して、外部クラスのインスタンスを囲まなくても存在できることを示します。このフレーズを間違って使用していると思います。
addObserverに渡すことができるようにRのインスタンスのみを作成しても大丈夫ですか?
はい、確かに。R
すべてのメンバーがクラスに属している(ClassLoaderによってロードされる)ように宣言したからstatic
といって、クラスのインスタンスを必要な数だけ構築して使用できないわけではありません。
何らかの形でObservable-Observerパターンに違反していますか?
限りR implements Observer
、いいえ。実際、同じオブザーバブルが複数のオブザーバブルを監視することは異常ではありません。
いいえ、違反しません。将来、他のオブザーバーがいる可能性があることを誰が知っていますか。非静的メソッドによって更新される静的フィールドを引き続き使用できます。したがって、静的フィールドの状態はすべてのインスタンスで共有されます。(モノ状態パターン)
原則として、静的なメソッドとフィールドの使用は避けてください。つまり、インスタンスメンバーとのみ共存できる場合は、そうします。静的メンバーは邪悪であり、時には必要ですが、決して望まれることはありません。