2017-07-19 6 views
0

オブザーバーパターンは1対多の関係または多対多の関係をモデル化していますか?オブザーバーパターンの関係

私はオブザーバーパターンでモデル化された関係が1対多である多くのリソースを見つけました。これは完全に意味をなさないが、多対多の関係をモデル化することは可能ではなく、一般的な関係がn:mであることを意味しないだろうか?

これは、オブザーバパターンによってモデル化された関係についての一般的な質問であり、オブザーバを他のオブザーバに追加する方法に関するものではありません。

+0

[観察者が複数の観察可能なものを観察することができますか?](https://stackoverflow.com/questions/4829462/can-an-observer-observe-multiple-observables) –

+0

あなたの質問は、多対多の例です。 – Fuhrmanator

答えて

1

1つの観測オブジェクトには、オブザーバから通知を受けるために登録して待機している多くのオブジェクトを含めることができます。あなたがすでに知っているように、これは1対多です。私はこれを多くの人にどのようにしたいと思うのか正確にはわかりません。もちろん、同じオブザーバーに他のオブザーバブルオブジェクトをサブスクライブすることもできますが、これは多くのIMHOにこのパターンを適用しません。

Observable1.Subscribe(observer1); 
Observable1.Subscribe(observer2); 
Observable1.Subscribe(observer3); 

Observable2.Subscribe(observer1); 
Observable2.Subscribe(observer2); 
Observable2.Subscribe(observer3); 

...

ObservableN.Subscribe(observer1); 
ObservableN.Subscribe(observer2); 
ObservableN.Subscribe(observerN); 

あなたはちょうどここにNオブザーバーパターンを実装しました。

+0

さて、私はこれについてあなたと一緒にいます。実際には、多対多ではあるが、これと同じ意見を持っていると教えてくれた教授です。 –

1

正式にあなたの質問に答えるために:
http://sourcemaking.com/design_patterns/observerからを一つのオブジェクトの状態が変化したときに、そのすべての扶養家族が通知され、自動的に更新されるように、オブジェクト間の1対多の依存関係を定義します。

私はイテレータパターンを組み合わせて、複数のオブザーバに繰り返します。
私にはObserverパターンを一対多に保つことが理にかなっています。別のコードであなたの多数の購読を管理します。これにより、科目が変更された場合にコード管理が容易になります。

+0

これは私の質問に答えません:)私の質問はちょうどオブザーバーパターンのモデル化された関係についてです。これは一般的な質問であり、実装方法に関するものではありません。 –

関連する問題