- 浏览: 43696 次
文章分类
最新评论
所谓,观察者模式:定义对象间一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。
观察者类:
1.抽象主题角色:主题角色将所有对观察者对象的引用保存在一个集合中,每个主题可以任意多个观察者。抽象主题提供了增加和删除观察者对象的接口。
2.抽象观察者角色:为所有的具体观察者定义一个接口,在观察的主题发生改变时更新自己
3.具体主题角色:存储相关状态到具体观察者对象,当具体主题的内部状态发生改变时,给所有登记过的观察者发出通知。具体主题角色通常用一个具体子类实现。
4.具体观察者角色:存储一个具体主题对象,存储相关状态,实现抽象观察者角色所要求的更新接口,以使得其自身状态和主题的状态保持一致
作用:
1. 观察者模式的耦合度较小
2.支持广播通信
在网上众多的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导出word格式数据的代码一例
2013-11-14 16:24 1146发布:thatboy 来源:脚本学堂 【 大 ... -
php生成word文档的代码
2013-11-07 11:51 1235一、用windows里面自带的com,然后用 php生成wo ... -
php 导出word(可包含图片)
2013-11-07 11:44 865发布:sunday01 来源:Net 今天 为大家介绍 ... -
PHP获取域名及域名IP的方法
2013-10-17 15:46 2407最近在做的一个项目用到获取域名和IP的功能,大致有以下几种方法 ... -
php socket模拟http中post或get提交数据
2013-08-08 12:19 2714php socket模拟http中post或者get提交数据的 ... -
浅析php变量作用域的一些问题
2013-08-08 12:14 632学过C的人用php的时候一 ... -
下载站mime属性设置(让文件可下载)
2013-07-18 16:02 847一些下载网站为了支持更多的格式,一般情况下支持rar,zip等 ... -
PHP 数组和字符串互相转换的方法分享
2013-07-18 15:58 560PHP 具有两个函数,可以在字符串和数组之间互相进行转换。 ... -
php数组与字符串的转换函数整理汇总
2013-07-18 15:52 821对php中的数组与字符串的转换函数进行了详细的整理汇总。 1 ... -
php文件上传与下载的实例分享
2013-07-18 15:49 726分享有关php下载的相关文章。 先分享几个文件下载类: ph ... -
php设计模式之命令模式的应用举例
2013-05-21 22:50 508所谓,命令模式:将一个请求封装为一个对象,从而你可用不同的请求 ... -
php生成随机密码的函数一例
2013-05-21 22:42 544生成随机密码的函数,可自定义密码长度。 <?php / ... -
php打印网页的代码举例
2013-05-02 23:17 1370本文出处参考:http://www.jbxue.com/art ... -
php iconv字符串编码转换(GBK到UTF8字符集)的方法与实例
2013-05-02 23:14 3682本文原始链接:http://www ... -
一个php ftp类(复制、移动、删除文件、创建目录等)
2013-05-01 05:06 780一个不错的ftp操作类,可以完成复制、移动、删除文件、创建目录 ... -
php get_headers 判断URL是否有效的方法
2013-05-01 05:02 1143使用php get_headers判断url的真实有效性。 还 ... -
PHPmailer 邮件群发的实例代码
2013-05-01 05:00 820本文出处参考:http://www.jbxue.com/art ... -
PHPMailer邮件类发送邮件举例(smtp.163.com)
2013-04-27 22:27 16801、下载PHPMailer文件包,PHPMailer邮件发送类 ... -
PHP 获取指定月对应天数的代码
2013-04-17 05:59 635<?php /** * 获取指定月对应的天数 * ... -
php计算时间差的简单例子
2013-04-17 05:57 577例子:计算借书的天数,根据每天的日期进行计算。 (1) 有数 ...
相关推荐
观察者模式是软件设计模式中的一种行为模式,它允许一个对象(称为主题或可观察者)在状态发生改变时通知其他对象(称为观察者)。这种模式遵循了几个重要的设计原则,如开放封闭原则、依赖倒置原则和组合复用原则,...
观察者模式(Observer Pattern)是一种行为设计模式,它允许你定义一个订阅机制,可以在对象状态改变时通知多个“观察”该对象的其他对象。在PHP中,这种模式常用于实现事件驱动编程,使得代码模块之间可以松耦合地...
观察者模式是软件设计模式中的一种行为模式,它在PHP编程中被广泛使用,用于处理对象之间的一对多关系。这种模式的核心思想是允许一个对象(主题)在状态发生变化时,自动通知所有依赖它的对象(观察者),使它们...
观察者模式是一种行为设计模式,它定义了对象间的一种一对多的依赖关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式经常用于实现软件的分布式事件通知系统,例如,图形...
观察者模式是一种行为设计模式,允许对象之间一对多的依赖关系,当一个对象改变状态时,所有依赖者都会收到通知并自动更新。在PHP中实现观察者模式,可以使用面向对象编程的特性来构建一个灵活且松耦合的系统。 ...
PHP设计模式是将这些模式应用于PHP编程语言中的实践。本文将深入探讨PHP设计模式的几个重要方面,以及如何通过示例代码`demo0707`来理解它们。 一、单例模式(Singleton) 单例模式确保一个类只有一个实例,并提供...
观察者模式是一种软件设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。在PHP中,观察者模式常常用于事件驱动编程,帮助开发者实现松耦合的...
《PHP设计模式》一书由美国作者Aaron Saray撰写,主要针对PHP开发者,详细阐述了在实际编程过程中如何运用设计模式提升代码质量和可维护性。设计模式是软件工程中的最佳实践,它们是解决常见问题的经验总结,使得...
观察者模式是一种行为设计模式,它允许我们定义一个订阅机制,可以在对象状态改变时通知多个“观察”该对象的其他对象。在PHP中,观察者模式的实现可以帮助开发者创建可扩展且松耦合的代码,使得系统中的组件可以...
除此之外,PHP设计模式还有许多其他种类,如观察者模式、装饰器模式、代理模式、建造者模式等,它们在不同场景下各有优势。理解并灵活运用这些模式,能够提升代码的可读性、可维护性和扩展性,是成为一名专业PHP...
压缩包内的"PHP设计模式.chm"文件很可能是详细的电子书或教程,包含了每个模式的定义、示例代码和使用场景。学习并熟练掌握这些设计模式,将极大地提升PHP开发者的专业素养,使他们能够编写出更加高效、优雅的代码。...
本文将深入探讨三种常见的PHP设计模式:单例模式、工厂模式和观察者模式。 1、单例模式 单例模式的主要目的是确保一个类只有一个实例,并提供一个全局访问点。在数据库操作中,这种模式尤其有用,因为多个数据库...
PHP中的观察者模式是一种行为设计模式,它允许对象在状态改变时通知多个“观察者”对象。在Laravel框架中,观察者模式被广泛应用,用于当发生特定事件时执行某些任务。例如,一个模型可能触发保存、创建或更新等事件...
《编程之道-IOS设计模式解析》是一本深入探讨iOS应用开发中设计模式的书籍,源自知名网站www.xiandoudou.com。设计模式是软件工程中的重要概念,它提供了在特定场景下解决常见问题的标准解决方案,是经验丰富的...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它允许对象在状态变化时通知其他对象,而无需让这些对象了解导致变化的具体原因。在PHP中,观察者模式常用于实现事件驱动编程,帮助开发者创建松...
- **设计模式**:书中深入介绍了设计模式的概念,如单例模式、工厂模式、观察者模式等,这些模式在实际项目中被广泛使用,能够提高代码的可读性和可维护性。 - **架构模式**:讨论了如MVC(模型-视图-控制器)模式...
观察者模式是软件设计模式中的一种行为模式,其核心思想是定义对象之间的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。在PHP中,这种模式常用于构建事件驱动的系统,降低系统...