Heim > Artikel > Backend-Entwicklung > PHP-Entwurfsmuster: Beziehung zur Verhaltensprogrammierung
PHP-Entwurfsmuster implementieren Prinzipien der Verhaltensprogrammierung, um durch klar definierte Verhaltensweisen wiederholbaren und lose gekoppelten Code zu erstellen. Zu den spezifischen Mustern gehören: Beobachtermuster: Definiert eine Abonnement-Veröffentlichungsbeziehung, um Objekten die Überwachung und Reaktion auf Ereignisse zu erleichtern. Strategiemodus: Ermöglicht das Umschalten zwischen verschiedenen Algorithmen und die Ausführung verschiedener Operationen nach Bedarf. Befehlsmodus: Kapseln Sie Anforderungen in Objekte und führen Sie sie auf parametrisierte Weise aus.
Die Verhaltensprogrammierung erstellt wiederholbaren und lose gekoppelten Code, indem sie genau definierte Verhaltensweisen definiert. PHP bietet viele Entwurfsmuster für die Verhaltensprogrammierung. Lassen Sie uns sie untersuchen.
Das Observer-Muster definiert eine Abonnement-Veröffentlichungs-Beziehung, in der ein Objekt (Thema) Benachrichtigungen ausgeben kann und andere Objekte (Beobachter) diese abhören können.
interface Observer { public function update($subject); } class ConcreteObserver1 implements Observer { public function update($subject) { echo "ConcreteObserver1 received update from $subject\n"; } } class ConcreteObserver2 implements Observer { public function update($subject) { echo "ConcreteObserver2 received update from $subject\n"; } } class Subject { private $observers = []; public function attach(Observer $observer) { $this->observers[] = $observer; } public function detach(Observer $observer) { $key = array_search($observer, $this->observers); if ($key !== false) { unset($this->observers[$key]); } } public function notify() { foreach ($this->observers as $observer) { $observer->update($this); } } } // 实战案例 $subject = new Subject(); $observer1 = new ConcreteObserver1(); $observer2 = new ConcreteObserver2(); $subject->attach($observer1); $subject->attach($observer2); $subject->notify(); // 输出:"ConcreteObserver1 received update from Subject" 和 "ConcreteObserver2 received update from Subject"
Der Strategiemodus ermöglicht es Ihnen, je nach Bedarf zwischen verschiedenen Algorithmen zu wechseln.
interface Strategy { public function doOperation($a, $b); } class ConcreteStrategyA implements Strategy { public function doOperation($a, $b) { return $a + $b; } } class ConcreteStrategyB implements Strategy { public function doOperation($a, $b) { return $a - $b; } } class Context { private $strategy; public function __construct(Strategy $strategy) { $this->strategy = $strategy; } public function doOperation($a, $b) { return $this->strategy->doOperation($a, $b); } } // 实战案例 $context = new Context(new ConcreteStrategyA()); echo $context->doOperation(10, 5); // 输出:15 $context = new Context(new ConcreteStrategyB()); echo $context->doOperation(10, 5); // 输出:5
Befehlsmuster kapselt Anforderungen in Objekte, sodass Sie sie auf parametrisierte Weise ausführen können.
interface Command { public function execute(); } class ConcreteCommand implements Command { private $receiver; public function __construct($receiver) { $this->receiver = $receiver; } public function execute() { $this->receiver->action(); } } class Receiver { public function action() { echo "Receiver action executed\n"; } } class Invoker { private $commands = []; public function setCommand(Command $command) { $this->commands[] = $command; } public function invoke() { foreach ($this->commands as $command) { $command->execute(); } } } // 实战案例 $receiver = new Receiver(); $command = new ConcreteCommand($receiver); $invoker = new Invoker(); $invoker->setCommand($command); $invoker->invoke(); // 输出:"Receiver action executed"
Durch die Verwendung von Verhaltensentwurfsmustern in PHP können Sie Code erstellen, der wiederverwendbar, wartbar und flexibel ist.
Das obige ist der detaillierte Inhalt vonPHP-Entwurfsmuster: Beziehung zur Verhaltensprogrammierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!