php设计模式 Observer(观察者模式)_php技巧
/**
* 观察者模式
*
* 定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新
* 能够便利地创建查看目标对象状态的对象,并且提供与核心对象非耦合的指定功能
* 插件系统
*/
class Observerable
{
private $_observers = array();
public function registerObserver($observer)
{
$this->_observers[] = $observer;
}
public function removeObserver($observer)
{
$key = array_search($observer,$this->_observers);
if(!($key === false))
{
unset($this->_observers[$key]);
}
}
public function notifyObservers()
{
foreach($this->_observers as $observer)
{
if($observer instanceof Observer) $observer->update($this);
}
}
}
interface Observer
{
public function update($observer);
}
interface DisplayElement
{
public function display();
}
// -- 实例类定义
class NewsObserverable extends Observerable
{
private $_sports_news;
public function setSportsNews($data)
{
$this->_sports_news = $data;
$this->notifyObservers();
}
public function getSportsNews()
{
return $this->_sports_news;
}
private $_local_news;
public function setLocalNews($data)
{
$this->_local_news = $data;
$this->notifyObservers();
}
public function getLocalNews()
{
return $this->_local_news;
}
}
class SportsNews implements Observer,DisplayElement
{
private $_data = null;
public function update($observer)
{
if($this->_data != $observer->getSportsNews())
{
$this->_data = $observer->getSportsNews();
$this->display();
}
}
public function display()
{
echo $this->_data.date("Y-m-d H:i:s")."
";
}
}
class LocalNews implements Observer,DisplayElement
{
private $_data = null;
public function update($observer)
{
if($this->_data != $observer->getLocalNews())
{
$this->_data = $observer->getLocalNews();
$this->display();
}
}
public function display()
{
echo $this->_data.date("Y-m-d H:i:s")."
";
}
}
// -- 实例化 ---
$objObserver = new NewsObserverable();
$local = new LocalNews();
$sports = new SportsNews();
$objObserver->registerObserver($local);
$objObserver->registerObserver($sports);
$objObserver->setSportsNews("sports news 1 ");
$objObserver->setLocalNews("local news 1 ");
$objObserver->removeObserver($sports);
$objObserver->setLocalNews("local news 2 ");
$objObserver->setSportsNews("sports news 2 ");
$objObserver->removeObserver($local);
$objObserver->setLocalNews("local news 3 ");

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



PHP ist eine weit verbreitete und sehr beliebte Programmiersprache. PHP ist ein sehr wichtiger Bestandteil heutiger Webanwendungen. Bei der Entwicklung von PHP-Anwendungen spielen Designmuster eine entscheidende Rolle. Entwurfsmuster sind eine Vorlage zur Lösung von Problemen, die in verschiedenen Umgebungen wiederverwendet werden kann. Sie helfen uns, besseren Code zu schreiben und den Code zuverlässiger, wartbarer und skalierbarer zu machen. In diesem Artikel werden wir einige häufig verwendete Entwurfsmuster in PHP und deren Implementierung untersuchen. Singleton-Muster Das Singleton-Muster ist ein Erstellungsmuster, das dies ermöglicht

Einführung PHP-Entwurfsmuster sind eine Reihe bewährter Lösungen für häufige Herausforderungen in der Softwareentwicklung. Durch Befolgen dieser Muster können Entwickler eleganten, robusten und wartbaren Code erstellen. Sie unterstützen Entwickler bei der Einhaltung der SOLID-Prinzipien (Single Responsibility, Open-Closed, Liskov Replacement, Interface Isolation und Dependency Inversion) und verbessern so die Lesbarkeit, Wartbarkeit und Skalierbarkeit des Codes. Arten von Designmustern Es gibt viele verschiedene Designmuster, jedes mit seinem eigenen einzigartigen Zweck und seinen eigenen Vorteilen. Hier sind einige der am häufigsten verwendeten PHP-Entwurfsmuster: Singleton-Muster: Stellt sicher, dass eine Klasse nur eine Instanz hat und bietet eine Möglichkeit, global auf diese Instanz zuzugreifen. Factory-Muster: Erstellt ein Objekt, ohne seine genaue Klasse anzugeben. Es ermöglicht Entwicklern dies unter bestimmten Bedingungen

So verwenden Sie den Event-Manager (EventManager) zum Implementieren des Beobachtermusters im Phalcon-Framework. Einführung: Der Event-Manager (EventManager) ist eine der leistungsstarken und flexiblen Kernfunktionen im Phalcon-Framework. Durch die Verwendung von Ereignismanagern können Sie das Observer-Muster einfach implementieren, um eine lose Kopplung zwischen Objekten in Ihrer Anwendung zu erreichen. In diesem Artikel erfahren Sie, wie Sie den Event-Manager im Phalcon-Framework zum Implementieren des Beobachtermusters verwenden und entsprechende Codebeispiele bereitstellen. Schritt eins

1. Was sind PHP-Designmuster? PHP-Entwurfsmuster sind vordefinierte Codevorlagen, die zur Lösung häufiger Softwareentwicklungsprobleme entwickelt wurden. Sie bieten bewährte Lösungen, die die Wiederverwendbarkeit, Wartbarkeit und Skalierbarkeit von Code verbessern. 2. Arten von PHP-Entwurfsmustern Es gibt viele verschiedene Entwurfsmuster in PHP, und jedes Muster hat seinen spezifischen Zweck. Zu den häufigsten Mustern gehören: Singleton-Muster: Stellt sicher, dass es nur eine Instanz einer Klasse gibt. Factory-Muster: Erstellt Objekte unterschiedlichen Typs basierend auf den an ihn übergebenen Daten. Strategiemodus: Ermöglicht einem Programm, sein Verhalten zur Laufzeit zu ändern. Beobachtermuster: Ermöglicht Objekten, Ereignisse zu abonnieren und benachrichtigt zu werden, wenn Ereignisse auftreten. 3. Beispiel für den Singleton-Modus classSingleInstance{private

Verbessern Sie Ihre Java-Programmierkenntnisse: Beherrschen Sie die Implementierung des Adaptermodus und des Beobachtermodus und benötigen Sie spezifische Codebeispiele. Einführung: In der täglichen Softwareentwicklung müssen wir uns häufig mit Kompatibilitätsproblemen zwischen verschiedenen Klassen befassen und außerdem verschiedene Benutzerschnittstellen zur Ereignisüberwachung und -verarbeitung implementieren . Adaptermuster und Beobachtermuster sind zwei häufig verwendete Entwurfsmuster, die diese Probleme effektiv lösen können. In diesem Artikel wird die Implementierung von Adaptermustern und Beobachtermustern ausführlich vorgestellt und spezifische Java-Codebeispiele bereitgestellt, um den Lesern ein besseres Verständnis zu erleichtern. eins,

Das Beobachtermuster im Java-Framework definiert das Verhalten über Schnittstellen und abstrakte Klassen (1); Subjekt- und Beobachterklassen implementieren Verwaltungs- und Antwortverhalten (2); Im Beispiel verwaltet Subject Beobachter und löst Ereignisse aus (4), und ConcreteObserver reagiert auf Ereignisse (5).

Zu den PHP-Entwurfsmustern gehören: 1. Singleton-Modus, der sicherstellt, dass eine Klasse nur ein instanziiertes Objekt hat. 2. Factory-Modus, der den Instanziierungsprozess des Objekts in einer Factory-Klasse kapselt. 3. Abstrakter Factory-Modus, der a ähnelt Fabrikmuster zum Erstellen von Objekten; 4. Beobachtermuster, das Eins-zu-Viele-Abhängigkeiten zwischen Objekten realisiert; 5. Adaptermuster, das die Schnittstelle einer Klasse in die Schnittstelle einer anderen Klasse umwandelt; 6. Dekoratormuster, das dynamisch einige zusätzliche Funktionen hinzufügt; ein Objekt; 7. Iteratormuster; 9. Vorlagenmethodenmuster usw.

Entwurfsmuster sind ein weit verbreitetes Konzept in der modernen Softwareentwicklung. Entwurfsmuster sind gängige Lösungen, die in Softwaresystemen vorhanden sind und nachweislich dazu beitragen, dass Entwickler komplexe Softwareanwendungen effizienter erstellen können. Das Beobachtermuster ist eines der häufigsten Entwurfsmuster und außerdem ein wichtiges Konzept, das PHP-Entwickler beherrschen müssen. In diesem Artikel stellen wir das Konzept und die Implementierung des Observer-Musters vor und zeigen, wie man es in einer PHP-Anwendung verwendet. Was ist das Beobachtermuster? Beobachtermuster ist ein
