Definieren Sie eine Eins-zu-viele-Abhängigkeitsbeziehung zwischen Objekten, sodass die zugehörigen abhängigen Objekte benachrichtigt und automatisch aktualisiert werden, wenn sich der Status eines Objekts ändert. Alias des Observer-Musters umfassen Publish/Subscribe-Muster, Model/View-Muster, Source/Listener-Muster oder Dependents-Muster. Beobachtermuster ist ein Objektverhaltensmuster. BeobachtermusterDefinieren Sie Eins-zu-viele-Abhängigkeiten von Objekten, sodass alle abhängigen Objekte benachrichtigt und automatisch aktualisiert werden, wenn sich der Status eines Objekts ändert!
<?php /** * 观察者模式 * @author: Mac * @date: 2012/02/22 */ abstract class Pa { private $_observers = array(); public function register($sub) { } public function trigger() { } } class Paper extends Pa { /* 主题 */ private $_observers = array(); // 存放new的对象 public function register($sub) { /* 注册观察者 */ $this->_observers[] = $sub; } public function trigger() { /* 外部统一访问 */ if (!empty($this->_observers)) { foreach ($this->_observers as $observer) { $observer->update(); } } } } /** * 观察者要实现的接口 */ interface Observerable { public function update(); } class Subscriber1 implements Observerable //观察者 { public function update() { echo "观察者1收到执行通知 执行完毕\n"; } } class Subscriber2 implements Observerable //观察者2 { public function update() { echo "观察者2收到执行通知 执行完毕\n"; } } /* 测试 */ $paper = new Paper(); $paper->register(new Subscriber1()); $paper->trigger();
Das Beobachtermuster ist ein sehr häufig verwendetes Entwurfsmuster, egal ob es sich um eine mobile Anwendung, eine Webanwendung oder eine Desktopanwendung handelt. Es realisiert die Verknüpfung zwischen Objekten , und das Beobachtermuster kann in jedem Szenario verwendet werden, das eine Eins-zu-eins- oder Eins-zu-viele-Objektinteraktion beinhaltet.
Verwandte Empfehlungen:
Was Sie über den PHP-Beobachtermodus nicht verstehen
Codebeispiele des PHP Observer Pattern
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Beobachtermusters von PHP-Entwurfsmustern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!