1

私の目標の非常に基本的な考え方は次のとおりです。

  1. ユーザー A がフォームを介して値をsubmit.php
  2. ユーザー B は、送信された値を監視します。この値は、サーバー送信イベントを介して更新され、からプッシュされupdates.phpます。

submit.phpは、データベースへの新しい値の書き込みと、 のオブザーバー オブジェクトへの通知を処理しますupdates.php

混乱のポイント:

  1. の各インスタンス (セッション) にupdates.phpは独自のオブザーバーが必要ですか? 更新を表示する各ユーザーはスクリプトの独自のインスタンスを実行しますか? それとも、すべて同じグローバル オブザーバー オブジェクトを共有できますか?

  2. サブジェクト オブジェクトが読み込まれると、オブザーバー オブジェクトはどこから取得されるのでしょうか? オブザーバーがアクティブであるため、オブザーバーを保存/スリープ状態にすることはできませんよね?

  3. ObjectStorage オブジェクトを使用する場合、submit.phpが呼び出されてフェッチされると、オブザーバー オブジェクトは実際にオブザーバー オブジェクトになりますか? つまり、更新メソッドを呼び出すと、実際にユーザーのリストが更新されますか?

  4. submit.phpフォームが送信されるたびに ObjectStorage オブジェクトを保存/取得するにはどうすればよいですか? 明らかに、私はセッションを使用できませんよね?それらはユーザーごとですか?

短いバージョン:オブザーバーがライブオブジェクトであるサブジェクト側のオブザーバーを含むグローバルで永続的なオブジェクトを取得する方法はありますか?

このアイデアに対するより良い、またはより簡単なアプローチがある場合 (または、私が完全に混乱していて教育が必要な場合) は、お知らせください。しかし、私はこのプロジェクトを使用して Observer パターンをアイデアとしてよりよく理解しようとしているため、既にすべてを実行できるフレームワークを探しているわけではありません。

4

2 に答える 2

1

説明の前に覚えておくべき重要な注意事項:

デザインパターンは、特定の言語関連の問題 (制限) を解決するために作成されたソリューションです。これらは、言語レベルでのソフトウェア アーキテクチャの設計経験則ではありません。

オブザーバー パターンをどのように確認できるかはわかりませんが、とにかくお手伝いします。

  1. いいえ。あなたの場合のセッションはユーザーインスタンスを意味します。どういうわけか、更新のすべてのインスタンスを処理する単一の抽象オブザーバーを使用する必要があります。グローバルな Observer オブジェクトが最適です。

  2. はい、オブザーバーは自分自身をサブジェクトに登録するため、それらはアクティブなオブジェクトです。ある時点で、それらを傍受する必要があります。

  3. サブジェクトが変更されるたびに、それが変更されたことをすべての登録済みオブザーバーにブロードキャストし、各オブザーバーは監視を担当するサブジェクトの状態のサブセットについてサブジェクトに問い合わせます。そこからそれを理解できると思います。

  4. それは本当に実装設計に関するものです。それを行うための特定の方法はありません。自分に合ったものを試してみることができます。

基本的に、はい、グローバルな Observer オブジェクトを持つことができますが、それは実際にはパターンの要点ではありません。

Observer パターンの実装について読んでみて、それがまったく役立つかどうかを確認してください。

于 2012-03-28T18:54:18.553 に答える
0

socket.ioを調査することをお勧めします。

于 2012-03-28T20:29:40.933 に答える