`

php设计模式之观察者模式的应用示例

    博客分类:
  • PHP
阅读更多
所谓,观察者模式:定义对象间一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。

观察者类:
1.抽象主题角色:主题角色将所有对观察者对象的引用保存在一个集合中,每个主题可以任意多个观察者。抽象主题提供了增加和删除观察者对象的接口。

2.抽象观察者角色:为所有的具体观察者定义一个接口,在观察的主题发生改变时更新自己

3.具体主题角色:存储相关状态到具体观察者对象,当具体主题的内部状态发生改变时,给所有登记过的观察者发出通知。具体主题角色通常用一个具体子类实现。

4.具体观察者角色:存储一个具体主题对象,存储相关状态,实现抽象观察者角色所要求的更新接口,以使得其自身状态和主题的状态保持一致

作用:
1. 观察者模式的耦合度较小
2.支持广播通信

在网上众多的php 教程中,对php设计模式的讲解,多限于理论的介绍,但是学习设计模式必须要有实例,才能加深理解。

来看本文章给出的实例代码:
<?php
//抽象主题
interface Subject{
public function attach($observer);
public function detach($observer);
public function notifyObservers();
}
//具体主题
class ConcreateSubject implements Subject{
private $_observers;
public function __construct(){
$this->_observers = array();
}

public function attach($observer){
return array_push($this->_observers,$observer);
}

public function detach($observer){
$index = array_search($observer,$this->_observers);
if($index === false || !array_key_exists($index,$this->_observers)){
return false;
}
unset($this->_observer[$index]);
return true;
}

public function notifyObservers(){
if(!is_array($this->_observers)){
return false;
}
foreach($this->_observers as $observer){
$observer->update();
}
return true;
}
}

//抽象观察者
interface Observer{
public function update();
}
//具体观察者
class ConcreteObserver implement Observer{
private $_name;
public function __construct($name){
$this->_name = $name;
}

public function update(){
echo 'Observer',$this->_name.'has notified<br/>';
}
}

//客户端
class Client{
public static function main(){
$subject = new ConcreteSubject();
//新增第一个观察者
$observer1 = new ConcreteObserver('Martin');
$subject->attach($observer1);
//通知
$subject->notifyObservers();

//新增第二个观察者
$observer2 = new ConcreteObserver('jaky');
$subject->attach($observer2);
//通知
$subject->notifyObservers();

//删除观察者1
$subject->deatch($observer1);
//通知
$subject->notifyObservers();
}
}

Client::main();
?>
分享到:
评论

相关推荐

    PHP 设计模式之观察者模式介绍

    观察者模式是软件设计模式中的一种行为模式,它允许一个对象(称为主题或可观察者)在状态发生改变时通知其他对象(称为观察者)。这种模式遵循了几个重要的设计原则,如开放封闭原则、依赖倒置原则和组合复用原则,...

    PHP设计模式之观察者模式定义与用法示例

    观察者模式(Observer Pattern)是一种行为设计模式,它允许你定义一个订阅机制,可以在对象状态改变时通知多个“观察”该对象的其他对象。在PHP中,这种模式常用于实现事件驱动编程,使得代码模块之间可以松耦合地...

    php设计模式之观察者模式的应用详解

    观察者模式是软件设计模式中的一种行为模式,它在PHP编程中被广泛使用,用于处理对象之间的一对多关系。这种模式的核心思想是允许一个对象(主题)在状态发生变化时,自动通知所有依赖它的对象(观察者),使它们...

    PHP设计模式之观察者模式(Observer)详细介绍和代码实例

    观察者模式是一种行为设计模式,它定义了对象间的一种一对多的依赖关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式经常用于实现软件的分布式事件通知系统,例如,图形...

    php设计模式之观察者模式定义与用法经典示例

    观察者模式是一种行为设计模式,允许对象之间一对多的依赖关系,当一个对象改变状态时,所有依赖者都会收到通知并自动更新。在PHP中实现观察者模式,可以使用面向对象编程的特性来构建一个灵活且松耦合的系统。 ...

    php设计模式demo

    PHP设计模式是将这些模式应用于PHP编程语言中的实践。本文将深入探讨PHP设计模式的几个重要方面,以及如何通过示例代码`demo0707`来理解它们。 一、单例模式(Singleton) 单例模式确保一个类只有一个实例,并提供...

    PHP设计模式之观察者模式入门与应用案例详解

    观察者模式是一种软件设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。在PHP中,观察者模式常常用于事件驱动编程,帮助开发者实现松耦合的...

    PHP设计模式 ((美)Aaron Saray) 中文pdf扫描版

    《PHP设计模式》一书由美国作者Aaron Saray撰写,主要针对PHP开发者,详细阐述了在实际编程过程中如何运用设计模式提升代码质量和可维护性。设计模式是软件工程中的最佳实践,它们是解决常见问题的经验总结,使得...

    观察者模式 - PHP版

    观察者模式是一种行为设计模式,它允许我们定义一个订阅机制,可以在对象状态改变时通知多个“观察”该对象的其他对象。在PHP中,观察者模式的实现可以帮助开发者创建可扩展且松耦合的代码,使得系统中的组件可以...

    深入分析PHP设计模式

    除此之外,PHP设计模式还有许多其他种类,如观察者模式、装饰器模式、代理模式、建造者模式等,它们在不同场景下各有优势。理解并灵活运用这些模式,能够提升代码的可读性、可维护性和扩展性,是成为一名专业PHP...

    PHP设计模式.rar

    压缩包内的"PHP设计模式.chm"文件很可能是详细的电子书或教程,包含了每个模式的定义、示例代码和使用场景。学习并熟练掌握这些设计模式,将极大地提升PHP开发者的专业素养,使他们能够编写出更加高效、优雅的代码。...

    php设计模式小结

    本文将深入探讨三种常见的PHP设计模式:单例模式、工厂模式和观察者模式。 1、单例模式 单例模式的主要目的是确保一个类只有一个实例,并提供一个全局访问点。在数据库操作中,这种模式尤其有用,因为多个数据库...

    PHP观察者模式示例【Laravel框架中有用到】

    PHP中的观察者模式是一种行为设计模式,它允许对象在状态改变时通知多个“观察者”对象。在Laravel框架中,观察者模式被广泛应用,用于当发生特定事件时执行某些任务。例如,一个模型可能触发保存、创建或更新等事件...

    编程之道-IOS设计模式解析[www.xiandoudou.com]

    《编程之道-IOS设计模式解析》是一本深入探讨iOS应用开发中设计模式的书籍,源自知名网站www.xiandoudou.com。设计模式是软件工程中的重要概念,它提供了在特定场景下解决常见问题的标准解决方案,是经验丰富的...

    PHP设计模式之观察者模式实例

    观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它允许对象在状态变化时通知其他对象,而无需让这些对象了解导致变化的具体原因。在PHP中,观察者模式常用于实现事件驱动编程,帮助开发者创建松...

    PHP高级程序设计:模式框架与测试

    - **设计模式**:书中深入介绍了设计模式的概念,如单例模式、工厂模式、观察者模式等,这些模式在实际项目中被广泛使用,能够提高代码的可读性和可维护性。 - **架构模式**:讨论了如MVC(模型-视图-控制器)模式...

    PHP设计模式之观察者模式定义与用法分析

    观察者模式是软件设计模式中的一种行为模式,其核心思想是定义对象之间的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。在PHP中,这种模式常用于构建事件驱动的系统,降低系统...

Global site tag (gtag.js) - Google Analytics