首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PHP设计模式|观察者模式

第二天让我们加入统计登陆次数,然后在后面加代码 第三天让我们判断登陆地区,又在后面加代码 第四天让我们在用户登陆后推送活动,再再后面加代码 第N天,这个接口已经杂乱到没人想维护了 我们需要让项目保持高内聚低耦合,就可以用到观察者模式...(也不是非要,看需求) 概念 观察者观察者,首先要有个被人观察的角色,这是唯一的,然后会有无数个观察者去看她,可以说是一群人在围观一个人,既然有无数个观众,那总得有个东西记录有哪些观察者,那就应该有一个类似于数组一样来储存所有观察者...; } Subject就是被观察者,Observer就是观众,也就是观察者观察者 // 被观察者 class Action implements Subject{ public $_observers...,执行它的register()方法,把每个观察者都放入容器数组,最后执行notify()方法,通知所有观察者执行自己的方法。...PHP原生自带的观察者模式 PHP有自带的观察者模式 splsubject接口 - 被观察者 Observer接口 - 观察者 SplObjectStorage对象 - 容器 首先我们有一个用户登录类

37410
您找到你想要的搜索结果了吗?
是的
没有找到

PHP设计模式观察者模式

PHP设计模式观察者模式 观察者,貌似在很多科幻作品中都会有这个角色的出现。比如我很喜欢的一部美剧《危机边缘》,在这个剧集中,观察者不停的穿越时空记录着各种各样的人或事。...但是,设计模式中的观察者可不只是站在边上看哦,这里的观察者是针对主体发生的状态改变来做出对应的动作。...其实,这里就引出了另一个非常出名的模式订阅发布模式。这个模式可以说是观察者的升级模式,这个系列的文章不会细讲,但是大家可以去看看Laravel中的发布订阅及事件监听方面的内容。 订单售出类图 ?...的SPL扩展中已经为我们准备好了一套观察者接口,大家可以试试哦,使用原生支持的观察者模式能省不少事儿呢!...SPL扩展实现观察者模式-完整源码:https://github.com/zhangyue0503/designpatterns-php/blob/master/06.observer/source/spl_observer.php

52020

php设计模式(十九):观察者模式(Observer)

观察者模式 观察者模式又称为:事件订阅者、监听者、Event-Subscriber、Listener、Observer。...观察者是一种行为设计模式,允许定义一种订阅机制,可在对象事件发生时通知多个“观察”该对象的其他对象。 问题 观察者模式是一种发布和订阅模式,我们平常去抢购茅台、Aj、…多少会用到观察者模式。...PHP_EOL; } } PHP Copy 客户端使用 $shop = new Shop(); $zs = new Customer('张三'); $ls = new Customer('李四'...PHP_EOL; $shop->detach($ls); $shop->notify(); PHP Copy 输出 我是张三,我马上来门店产看新产品 我是李四,我马上来门店产看新产品 我是王五,我马上来门店产看新产品...产品不好,李四想退出订阅 我是张三,我马上来门店产看新产品 我是王五,我马上来门店产看新产品 php 官方已经提供了,请参考:SplObserver 和 SplSubject UML 优缺点

11420

PHP 设计模式观察者模式

很多时候,我看设计模式的时候,有些设计模式只是吻合我的代码习惯。但是你硬去套它,那么反而适得其反。...观察者模式定义对象的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新! 设计原则 在观察者模式中,会改变的是主题的状态以及观察者的数目。...观察者模式利用“组合”将许多观察者组合进主题中。对象(观察者——主题)之间的这种关系不是通过继承产生的,而是在运行时利用组合的方式产生的。 ——多用组合,少用继承! 代码 <?...php /**  * 观察者模式  * @author: Mac  * @date: 2012/02/22  */     class Paper{ /* 主题    */     private $_...这降低了主题对象和观察者对象的耦合度。 好的设计模式不会直接进入你的代码中,而是进入你的大脑中。

29810

php设计模式(十九):观察者模式(Observer)

观察者模式 观察者模式又称为:事件订阅者、监听者、Event-Subscriber、Listener、Observer。...观察者是一种行为设计模式,允许定义一种订阅机制,可在对象事件发生时通知多个“观察”该对象的其他对象。 问题 观察者模式是一种发布和订阅模式,我们平常去抢购茅台、Aj、…多少会用到观察者模式。...PHP_EOL; } } 客户端使用 $shop = new Shop(); $zs = new Customer('张三'); $ls = new Customer('李四'); $ww =...PHP_EOL; $shop->detach($ls); $shop->notify(); 输出 我是张三,我马上来门店产看新产品 我是李四,我马上来门店产看新产品 我是王五,我马上来门店产看新产品...产品不好,李四想退出订阅 我是张三,我马上来门店产看新产品 我是王五,我马上来门店产看新产品 php 官方已经提供了,请参考:SplObserver 和 SplSubject UML 优缺点 优点

36230

PHP面向对象的设计模式-观察者模式

一、概述观察者模式是一种行为设计模式,它定义了对象之间的一种一对多的依赖关系,当一个对象状态发生改变时,所有依赖它的对象都将得到通知并自动更新。...这种模式也叫做发布-订阅模式,它能够解决对象之间的耦合关系。观察者模式有三个角色:Subject(主题)、Observer(观察者)和ConcreteObserver(具体观察者)。...观察者模式的优点是可以实现松耦合,即Subject和Observer之间的耦合度很低,它们可以独立地改变而不会影响到对方。...此外,观察者模式还支持广播通信,即Subject可以同时通知多个Observer。二、示例下面是一个使用观察者模式的示例。假设有一个天气主题,它会随着天气的变化通知所有的观察者。...使用观察者模式的主要步骤如下:定义Subject接口,其中包含注册、移除和通知观察者的方法。定义Observer接口,其中包含接收通知的方法。

30771

php模式设计之观察者模式应用实例分析

本文实例讲述了php模式设计之观察者模式。分享给大家供大家参考,具体如下: 这是我写的《php模式设计》的第五篇。前面的四篇在不断学习不断加深认识,到了今天再看观察者模式,觉得非常容易理解。...开篇还是从名字说起,“观察者模式”的观察者三个字信息量很大。玩过很多网络游戏的童鞋们应该知道,即便是斗地主,除了玩家,还有一个角色叫“观察者”。在我们今天他谈论的模式设计中,观察者也是如此。...观察者模式更多体现了两个独立的类利用接口完成一件本应该很复杂的事情。不利用主题类的话,我们还需要不断循环创建实例,执行操作。而现在只需要创建实例就好,执行操作的事儿只需要调用一次通知的方法就好啦。...当然纸上谈兵还是要不得的,最好还是投入更多的练习中去吧~~· 相关文章:《使用观察者模式处理异常信息》 更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组...(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

30921

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

本文实例讲述了PHP设计模式观察者模式定义与用法。...php /** * 3.1php设计模式-观测者模式 * 3.1.1概念:其实观察者模式这是一种较为容易去理解的一种模式吧,它是一种事件系统,意味 * 着这一模式允许某个类观察另一个类的状态,当被观察的类状态发生改变的时候..., * 观察类可以收到通知并且做出相应的动作;观察者模式为您提供了避免组件之间 * 紧密耦合的另一种方法 * 3.1.2关键点: * 1.被观察者- 追加观察者;- 一处观察者;-...满足条件时通知观察者;- 观察条件 * 2.观察者 - 接受观察方法 * 3.1.3缺点: * 3.1.4观察者模式PHP中的应用场合:在web开发中观察者应用的方面很多 * 典型的:用户注册...更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串

34220

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

本文实例讲述了PHP设计模式观察者模式。...分享给大家供大家参考,具体如下: “观察者模式”的观察者三个字信息量很大,玩过很多网络游戏的童鞋们应该知道,即便是斗地主,除了玩家,还有一个角色叫“观察者”,在咱们本次文章中的观察者模式也是如此,就是我们会有要有一个...我们可以看到,观察者设计模式非常常用,在一般复杂的WEB系统中,观察者模式可以帮你减轻代码设计的压力,降低代码耦合。...php //观察者设计模式能够更便利创建和查看目标对象状态的对象,并且提供和核心对象非耦合的置顶功能性。...//观察者设计模式非常常用,在一般复杂的WEB系统中,观察者模式可以帮你减轻代码设计的压力,降低代码耦合。

79631

观察者模式

1.定义 观察者模式是一种行为类模式,它定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。...2.实例(订阅杂志) /** * 抽象观察者类,为所有具体观察者定义一个接口,在得到通知时更新自己 */ public interface Observer { /** * 有更新就推送消息...*/ public void update(String message); } /** * 具体的观察者类,也就是订阅者 */ public class User implements...requestLayout();//************************重新布局,ViewGroup } } 4.总结 1.优点 (1)观察者和被观察者之间是抽象耦合...2.缺点 在应用观察者模式时需要考虑一下开发效率和运行效率的问题,程序中包括一个被观察者、多个观察者,开发、调试等内容会比较复杂,而且在Java中消息的通知一般是顺序执行,那么一个观察者卡顿,会影响整体的执行效率

55230

观察者模式

概述   有时被称作发布/订阅模式观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。...观察者就是解决这类的耦合关系的。 ---- 观察者模式 观察者模式适合解决多种对象跟踪一个对象数据变化的程序结构问题, 有一个称作“主题”的对象和若干个称作“观察者的对象”。...因此设计观察者模式的只有两种角色:主题和观察者观察者模式中我们可以从以下递推中得出一些重要的结论 主题要知道有哪些观察者对其进行监测,因此主题类中一定有一个集合类成员变量,包含了观察这的对象集合。...---- JDK中的观察者和设计者模式 由于观察者模式中主题类功能以及观察者接口定义内容的稳定性,JDK的java.utils包提供了系统的主题类Observable以及观察者接口Observer....当然了我们之前提到的那些自定义实现的设计者模式也并非无效的,这些知识是从底层的接口讲起直至最高层,对于理解观察者模式的本质是有必要的。

65940

观察者模式

2019年3月25日11:01:22 观察者模式( observer pattern) 写在前面的话 正值金三银四跳槽季,设计模式也是常问的问题之一。...本人在3月2日的一次面试的二面中,问到设计模式,问到了观察者模式,而且要求写了伪代码。...观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。...————《设计模式:可复用面向对象软件的基础》 观察者模式是一种对象行为型模式。 使用场景 当一个对象的改变(名词)需要改变(动词)其他对象的时候。...观察者模式没有相应的机制让观察者知道所观察的目标对象是怎么发生变化的,而仅仅只是知道观察目标发生了变化。 总结 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。

39810

观察者模式

大家好,我是老田,今天我给大家分享设计模式中的观察者模式。用贴切的生活故事,以及真实项目场景来讲设计模式,最后用一句话来总结这个设计模式。...看完这个后,我忽然想起一个设计模式观察者模式。 老田是个喜欢学习春秋战国时期的历史和人文故事,有通道之人,可以私聊! 为什么会想到哦观察者模式呢?请听老田慢慢道来。 本文目录: ?...7个问题 快速掌握 模板方法 模式 五分钟 掌握 原型模式 泡图书馆,我想到了 享元模式 言归正传,我们先来看看观察者模式的定义。...下面我们来看看一个写生活中的观察者模式的场景。 观察者模式的应用场景 观察者模式在现实生活中的应用也非常广泛,比如:各种APP上的各种消息提示、学校铃声、公众号文章提示、各大网站消息提示等。...总结 从本文内容,我们很容易看出,观察者模式其实是围绕了解耦的思想来写的,观察者模式作为行为型设计模式,主要也是为了不同的业务行为的代码解耦。

65220

观察者模式

观察者模式 观察者模式Observer Pattern是一种对象行为型模式,当定义的对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新,观察者模式又叫做发布...描述 观察者模式建立了一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应做出反应。...优点 观察者模式可以实现表示层和数据逻辑层的分离,并定义了稳定的消息更新传递机制,抽象了更新接口,使得可以有各种各样不同的表示层作为具体观察者角色。...观察者模式在观察目标和观察者之间建立一个抽象的耦合。 观察者模式支持广播通信。 观察者模式符合开闭原则的要求。...观察者模式没有相应的机制让观察者知道所观察的目标对象是怎么发生变化的,而仅仅只是知道观察目标发生了变化。 适用环境 一个抽象模型有两个方面,其中一个方面依赖于另一个方面。

42500

观察者模式

当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。...3、观察者模式没有相应的机制让观察者知道所观察的目标对象是怎么发生变化的,而仅仅只是知道观察目标发生了变化。 使用场景: 1、有多个子类共有的方法,且逻辑相同。...注意事项: 1、JAVA 中已经有了对观察者模式的支持类。 2、避免循环引用。 3、如果顺序执行,某一观察者错误会导致系统卡壳,一般采用异步方式。...实现 观察者模式使用三个类 Subject、Observer 和 Client。Subject 对象带有绑定观察者到 Client 对象和从 Client 对象解绑观察者的方法。...ObserverPatternDemo,我们的演示类使用 Subject 和实体类对象来演示观察者模式。 步骤 1 创建 Subject 类。

32410

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券