Home Backend Development PHP Tutorial php设计模式 Observer(观察者模式)_php技巧

php设计模式 Observer(观察者模式)_php技巧

May 17, 2016 am 09:17 AM
php design patterns Observer pattern

复制代码 代码如下:

/**
* 观察者模式
*
* 定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新
* 能够便利地创建查看目标对象状态的对象,并且提供与核心对象非耦合的指定功能
* 插件系统
*/
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 ");
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Commonly used design patterns in PHP and their implementation methods Commonly used design patterns in PHP and their implementation methods Jun 27, 2023 pm 01:08 PM

PHP is a widely used and very popular programming language. PHP is a very important part of today's web applications. Design patterns play a vital role in developing PHP applications. Design pattern is a template for solving problems that can be reused in different environments. It helps us write better code and make the code more reliable, maintainable and scalable. In this article, we will explore some commonly used design patterns in PHP and how to implement them. Singleton Pattern Singleton pattern is a creation pattern that allows

PHP Design Patterns: The Path to Code Excellence PHP Design Patterns: The Path to Code Excellence Feb 21, 2024 pm 05:30 PM

Introduction PHP design patterns are a set of proven solutions to common challenges in software development. By following these patterns, developers can create elegant, robust, and maintainable code. They help developers follow SOLID principles (single responsibility, open-closed, Liskov replacement, interface isolation and dependency inversion), thereby improving code readability, maintainability and scalability. Types of Design Patterns There are many different design patterns, each with its own unique purpose and advantages. Here are some of the most commonly used PHP design patterns: Singleton pattern: Ensures that a class has only one instance and provides a way to access this instance globally. Factory Pattern: Creates an object without specifying its exact class. It allows developers to conditionally

How to implement the observer pattern using Event Manager in the Phalcon framework How to implement the observer pattern using Event Manager in the Phalcon framework Aug 02, 2023 pm 07:25 PM

How to use the event manager (EventManager) to implement the observer pattern in the Phalcon framework Introduction: The event manager (EventManager) is one of the powerful and flexible core functions in the Phalcon framework. By using event managers, you can easily implement the Observer pattern to achieve loose coupling between objects in your application. This article will introduce you to how to use the event manager in the Phalcon framework to implement the observer pattern and provide corresponding code examples. step one

Uncovering the secrets of PHP design patterns Uncovering the secrets of PHP design patterns Feb 21, 2024 pm 01:19 PM

1. What are PHP design patterns? PHP design patterns are predefined code templates designed to solve common software development problems. They provide proven solutions that improve code reusability, maintainability, and scalability. 2. Types of PHP design patterns There are many different design patterns in PHP, and each pattern has its specific purpose. The most common patterns include: Singleton Pattern: Ensures there is only one instance of a class. Factory Pattern: Creates objects of different types based on the data passed to it. Strategy mode: Allows a program to change its behavior at runtime. Observer Pattern: Allows objects to subscribe to events and be notified when events occur. 3. Singleton mode example classSingleInstance{private

Improve Java programming skills: master the implementation of adapter pattern and observer pattern Improve Java programming skills: master the implementation of adapter pattern and observer pattern Dec 23, 2023 am 11:52 AM

Improve Java programming skills: Master the implementation of adapter mode and observer mode, need specific code examples Introduction: In daily software development, we often need to deal with compatibility issues between different classes, and also need to implement various user interfaces Event monitoring and processing. Adapter pattern and Observer pattern are two commonly used design patterns that can effectively solve these problems. This article will introduce the implementation of adapter pattern and observer pattern in detail, and provide specific Java code examples to help readers better understand. one,

What are the implementation methods of observer pattern in java framework? What are the implementation methods of observer pattern in java framework? Jun 03, 2024 pm 05:05 PM

The observer pattern in the Java framework defines behavior through interfaces and abstract classes (1); Subject and Observer classes implement management and response behavior (2); Subject provides subscription and cancellation methods, maintains observer collections, and notifies observers (3) . In the example, Subject manages observers and triggers events (4), and ConcreteObserver responds to events (5).

What are the design patterns in php? What are the design patterns in php? Jul 25, 2023 am 09:39 AM

PHP design patterns include: 1. Singleton mode, which ensures that a class has only one instantiated object; 2. Factory mode, which encapsulates the instantiation process of the object in a factory class; 3. Abstract factory mode, which is similar to a factory Pattern of creating objects; 4. Observer pattern, realizing one-to-many dependencies between objects; 5. Adapter pattern, converting the interface of one class into the interface of another class; 6. Decorator pattern, dynamically Add some additional functions to an object; 7. Iterator pattern; 8. Strategy pattern; 9. Template method pattern, etc.

Getting Started with PHP: Observer Pattern Getting Started with PHP: Observer Pattern May 20, 2023 am 08:21 AM

Design patterns are a widely used concept in modern software development. Design patterns are common solutions found in software systems that are tested and proven to help developers build complex software applications more efficiently. The observer pattern is one of the most common design patterns, and it is also an important concept that PHP developers need to master. In this article, we will introduce the concept and implementation of the Observer pattern and demonstrate how to use it in a PHP application. What is the observer pattern? Observer pattern is a

See all articles