blog

ObserverパターンとPublish-Subscribeパターンの比較

オブザーバーパターンでは、オブザーバーオブジェクト、つまりインスタンスを1つだけ保持すれば十分です。データの変更がある場合、それはオブザーバのセットを維持する必要があるだけで、これらのオブザーバは、同...

Sep 10, 2020 · 1 min. read
シェア

Observer パターン

Observerパターンでは、Observableオブジェクト、つまりObservableのインスタンスを1つだけ保持すれば十分です。データの変更があった場合、同じインターフェイスを実装したObserverのセットを維持するだけでよく、SubjectはObserverに通知する際にどの統一メソッドを呼び出すかだけ知っていればよいのです。

コードの例:

var subject = {
 observable: [],
 notify() {
 this.observable.forEach(observer => {
 observer.update()
 })
 },
 attach(observer) {
 this.observable.push(observer)
 }
}
var observer = {
 update() {
 console.log('update');
 }
}
subject.attach(observer)
subject.notify()

パブリッシュ・サブスクライブ・パターン

パブリッシュ・サブスクライブ・モードでは、パブリッシャーはサブスクライバーに 直接通知しません。言い換えると、パブリッシャーとサブスクライバーはお互いを知らず、 第三者、つまりメッセージキューによってトリガーされます。パブリッシャーとサブスクライバーはイベント名でつながっており、 イベント名が一致すると、対応するサブスクライバーのメソッドを 直接実行します。

コードの例:

var publisher = {
 publish(pubsub) {
 pubsub.publish()
 }
}
var pubsub = {
 subscribes: [],
 publish() {
 this.subscribes.forEach(sub => {
 sub.update()
 })
 },
 subscirbe(sub) {
 this.subscribes.push(sub)
 }
}
var subscribe = {
 update() {
 console.log('update');
 },
 subscribe(pubsub) {
 pubsub.subscirbe(this)
 }
}
subscribe.subscribe(pubsub)
publisher.publish(pubsub)
Read next

Pythonによるtelnet接続

コードは以下の通りです:

Sep 10, 2020 · 2 min read

sftpとftpの違い

Sep 10, 2020 · 1 min read

spring_amqp

Sep 5, 2020 · 1 min read