オブザーバー
オブザーバー(モダンPHP開発とアーキテクチャ)
意味 状態変化を監視して通知
オブザーバーとは?
オブザーバーパターンは、あるオブジェクト(サブジェクト)の状態が変化したときに、それを監視している他のオブジェクト(オブザーバー)に自動的に通知する仕組みを提供するデザインパターンです。これにより、オブジェクト間の結合度を下げつつ、効率的に状態の変化を伝達できます。
オブザーバーの具体的な使い方
オブザーバーパターンの実装例
<?php
interface Observer {
public function update($message);
}
class NewsPublisher {
private $observers = [];
private $latestNews = '';
public function attach(Observer $observer) {
$this->observers[] = $observer;
}
public function setNews($news) {
$this->latestNews = $news;
$this->notifyObservers();
}
private function notifyObservers() {
foreach ($this->observers as $observer) {
$observer->update($this->latestNews);
}
}
}
class NewsSubscriber implements Observer {
private $name;
public function __construct($name) {
$this->name = $name;
}
public function update($message) {
echo $this->name . "さんが新しいニュースを受け取りました: " . $message . "\n";
}
}
// 使用例
$publisher = new NewsPublisher();
$subscriber1 = new NewsSubscriber("田中");
$subscriber2 = new NewsSubscriber("佐藤");
$publisher->attach($subscriber1);
$publisher->attach($subscriber2);
$publisher->setNews("新型スマートフォンが発売されました!");
👇出力結果
田中さんが新しいニュースを受け取りました: 新型スマートフォンが発売されました!
佐藤さんが新しいニュースを受け取りました: 新型スマートフォンが発売されました!
この例では、NewsPublisherクラスがSubject(被観察者)として機能し、NewsSubscriberクラスがObserver(観察者)として機能します。NewsPublisherが新しいニュースを設定すると、登録されたすべてのNewsSubscriberに自動的に通知が送られます。これにより、ニュース配信システムのような、イベントベースの通知システムを簡単に実装できます。
オブザーバーに関するよくある質問
オブザーバーが学べる書籍の紹介
「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、PHPのオブザーバーやSymfony、ファクトリー、Laravel、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。
よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。
HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。
PHPを学べる「プログラミング単語帳」アプリ
プログラミング単語帳がアプリになりました!PHPはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。
収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。
いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。
2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!
2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!