PHP でトピックベースのパブリッシュ/サブスクライブ パターンを実装する方法
はじめに:
パブリッシュ/サブスクライブ パターン (パブリッシュ/サブスクライブ パターン) は、ソフトウェア設計で一般的に使用されるパターンです。パブリッシャーとサブスクライバー間の関係を解決します。このモードでは、パブリッシャーは複数のサブスクライバーにメッセージをパブリッシュし、サブスクライバーは関心のあるメッセージ トピックにのみ注意を払う必要があるため、疎結合設計が実現されます。この記事では、PHP でトピックベースのパブリッシュ/サブスクライブ モデルを実装する方法を紹介します。
まず、メッセージのパブリッシュとサブスクリプションを管理するトピック クラスを作成する必要があります。このクラスには次の機能が必要です。
class Subject { private $subscribers = []; public function subscribe($subscriber) { $this->subscribers[] = $subscriber; } public function unsubscribe($subscriber) { $key = array_search($subscriber, $this->subscribers); if ($key !== false) { unset($this->subscribers[$key]); } } public function publish($message) { foreach ($this->subscribers as $subscriber) { $subscriber->handleMessage($message); } } }
サブスクライバー インターフェイスを作成します
interface Subscriber { public function handleMessage($message); }
特定のサブスクライバ クラスの作成
class EmailSubscriber implements Subscriber { public function handleMessage($message) { echo "邮件订阅者收到消息:$message "; } } class SmsSubscriber implements Subscriber { public function handleMessage($message) { echo "短信订阅者收到消息:$message "; } }
パブリッシュ/サブスクライブ モデルの使用
// 创建主题对象 $subject = new Subject(); // 创建订阅者对象 $emailSubscriber = new EmailSubscriber(); $smsSubscriber = new SmsSubscriber(); // 注册订阅者到主题对象 $subject->subscribe($emailSubscriber); $subject->subscribe($smsSubscriber); // 发布消息 $subject->publish("新消息"); // 取消订阅 $subject->unsubscribe($emailSubscriber); // 再次发布消息 $subject->publish("另一条消息");
邮件订阅者收到消息:新消息 短信订阅者收到消息:新消息 短信订阅者收到消息:另一条消息
上記の手順により、トピックベースのパブリッシュ/サブスクライブ モデルの実装に成功しました。この設計パターンにより、発行者と購読者の関係が切り離され、新しい購読者の拡大が容易になります。実際のプロジェクトでは、必要に応じてサブスクライバとトピックを追加して、より豊富なメッセージ発行およびサブスクリプション機能を実現できます。
以上がPHP でトピックベースのパブリッシュ/サブスクライブ パターンを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。