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 ");

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP是一種廣泛使用且非常流行的程式語言。在當今的Web應用程式中,PHP是非常重要的一部分。在開發PHP應用程式的過程中,設計模式起著至關重要的作用。設計模式是解決問題的一種模板,在不同的環境中可重複使用,幫助我們寫出更好的程式碼,使程式碼更加可靠、可維護、可擴展。在本文中,我們將探討一些PHP中常用的設計模式及其實作方法。單例模式單例模式是一種創建模式,它允許

如何在Phalcon框架中使用事件管理器(EventManager)實現觀察者模式簡介:事件管理器(EventManager)是Phalcon框架中強大且靈活的核心功能之一。透過使用事件管理器,您可以輕鬆實現觀察者模式,以便在應用程式中實現物件之間的鬆散耦合。本文將為您介紹如何使用Phalcon框架中的事件管理器實作觀察者模式,並提供對應的程式碼範例。步驟一

導言PHP設計模式是一組經過驗證的解決方案,用於解決軟體開發中常見的挑戰。透過遵循這些模式,開發者可以創建優雅、健壯和可維護的程式碼。它們可協助開發者遵循SOLID原則(單一職責、開放-封閉、Liskov替換、介面隔離和依賴反轉),從而提高程式碼的可讀性、可維護性和可擴展性。設計模式的類型有許多不同的設計模式,每種模式都有其獨特的目的和優點。以下是一些最常用的php設計模式:單例模式:確保一個類別只有一個實例,並提供一種全域存取此實例的方法。工廠模式:建立一個對象,而不指定其確切類別。它允許開發者根據條件

1.什麼是PHP設計模式? PHP設計模式是預先定義的程式碼模板,旨在解決常見的軟體開發問題。它們提供了經過驗證的解決方案,可以提高程式碼的可重複使用性、可維護性和可擴充性。 2.PHP設計模式的類型php中有許多不同的設計模式,每種模式都有其特定的用途。最常見的模式包括:單例模式:確保一個類別只有一個實例。工廠模式:根據傳給它的資料建立不同類型的物件。策略模式:允許程式在運行時更改其行為。觀察者模式:允許物件訂閱事件並在事件發生時獲得通知。 3.單例模式範例classSingleInstance{private

提升Java程式設計技能:掌握適配器模式與觀察者模式的實作方式,需要具體程式碼範例引言:在日常的軟體開發中,我們常常需要處理不同類別之間的相容性問題,同時也需要實作各種使用者介面的事件監聽和處理。適配器模式和觀察者模式是兩種常用的設計模式,它們能夠有效地解決這些問題。本文將詳細介紹適配器模式和觀察者模式的實作方式,並提供具體的Java程式碼範例,幫助讀者更好地理解。一、

php設計模式有:1、單例模式,確保一個類別只有一個實例化物件;2、工廠模式,將物件的實例化過程封裝在一個工廠類別中;3、抽象工廠模式,是一種類似工廠模式的創建物件的模式;4、觀察者模式,實現物件之間的一對多依賴關係;5、適配器模式,將一個類別的介面轉換成另一個類別的介面;6、裝飾器模式,動態地給一個物件一些額外的功能;7、迭代器模式;8、策略模式;9、模板方法模式等等。

隨著技術的不斷發展,設計模式在軟體開發中變得越來越重要。 PHP7.0作為最新的PHP版本,也整合了許多的設計模式。在本文中,我們將探討PHP7.0中的設計模式,以幫助PHP程式設計師更好地理解並應用這些模式。單例模式單例模式是一種建立型模式,它確保一個類別只有一個實例,並提供了一個全域存取點。在PHP7.0中,可以使用__construct方法和static方法來

PHP核心的設計模式與實踐引言:設計模式是軟體開發中常用的解決問題的模板,它們提供了一種可重複使用的解決方案,可以幫助我們在開發過程中遵循最佳實踐和良好的軟體設計原則。 PHP作為一種廣泛應用的程式語言,也有許多常見且有用的設計模式可以在核心開發中使用。本文將介紹幾種常見的PHP設計模式,並提供相關的程式碼範例。一、單例模式(Singleton)單例模式是一種只允許
