手机版

对PHP观察者模式的深入理解和应用分析

时间:2021-08-20 来源:互联网 编辑:宝哥软件园 浏览:

本文展示了PHP观察者模式。分享给大家参考,如下:

模式开发的好处是可以让我们的逻辑结构和代码更清晰,更容易维护!

我们为什么使用“观察者模式”?这需要从实际应用中去理解,才能更好的利用!用下面的情况来说明。

一开始安排我登录项目,很快就完成了。然后,产品提出了另一个要求。用户登录后,会被推送实时消息!然后我在登录成功的逻辑后添加了一段代码,完成了登录后的实时消息推送。然而事情还没有结束,产品又增加了需求。需要给新登录的用户10元红包奖励。这当然很简单。消息推送后我添加了代码,完成了新登录用户的红包奖励(暂时如何取钱的过程)。然而,事情还是没完没了,产品在不断地增加需求。比如非vip用户登录,会被推送10条需要注册VIP才能打开的消息,比如根据客户习惯推送10条。等等,如果是这样的话,那我登录后还要加代码,我看不懂xxx写的代码!

这时我们必须考虑使用“观察者模式”

这样就可以简单明了地描述观察者模式。一个人被安排在购物中心的入口处观察。A型顾客进门,马上排锣鼓花。当观察到一个B型的顾客,他马上整理购物袋,观察到一个c型的顾客,嗯哼感觉他是来打酱油的。不要浪费他的表情。没有欢迎仪式。也就是说,观察者是个势利眼,看着人们玩彩票,并根据观察为入局的顾客安排相应的服务或某些服务!也许这个描述不够贴切,但大致意思差不多。

接下来是重点,描述观察者模式的轮廓,所以需要翻译成代码才能实际应用!

首先,必须有两个接口类来构建观察者模式。

观察到的接口类(一般来说,有三种必要的方法:1。添加观察者对象,2。删除一个观察者对象。通知观察者执行相应的执行),

观察者接口类(通常只有一个必要的方法,即执行)

如果可能很难直接理解代码,先给个示意图说清楚!

其次,根据观察者接口类的框架,我们设置接口类如下:

(例子是网上抄的,因为通俗易懂,请说明出处,网址:https://www . JB 51 . net/article/170753 . htm);

?Php//observed接口接口subject { public function register(observer $ observer);//添加(注册)observer对象公共函数detach(observer $ observer);//删除观察者对象公共函数notify();//通知观察者执行相应的功能}//观察者界面观察者界面{公共函数watch();//观察者要执行的方法}第三,根据框架结构,大致理解为:要实现被观察对象对各种观察者对象(完成各种功能的对象)的存储,然后只有每个观察者执行自己的功能,先看下面的实现代码。

?Php//class action实现观察者{ public $ _ observer=array()}继承的subject//用于存储observer对象//用于添加(注册)observer对象公共函数register(observer $ observer){ $ this-_ observer[]=$ observer;}//用于删除observer对象公共函数detach(observer $ observer){ $ index=array _ search($ observer,$ this-_ observer);if ($index===FALSE ||!array_key_exists($index,$ this-_ observer)){ return FALSE;} unset($ this-_ observer[$ index]);返回真;}//Notify公共函数Notify()的观察者{ //****关键点其实是循环执行每个观察这个对象的watch方法。不同的函数方法有不同的内容,但是方法名foreach($ this-_ observer as $ observer){ $ observer-watch();}} }//cat observer继承了class class cat实现了observer { public function watch(){ echo ' cat watches tvhr/';}} //dog observer继承了class dog实现了observer { public function watch(){ echo ' dog watches tvhr/';}} //people observer继承了class people实现了observer { public function watch(){ echo ' people watches tvhr/';}}好了,我们从上面的继承可以理解,观察者是定义各种功能的对象(这些对象是:比如给第一次登录的用户发红包,给用户推送最新的10篇文章,给非vip用户推送需要注册才能打开的10个视频,诱导用户打开vip。),被观察对象想要实现的是存储添加(注册)的观察对象,并通知它们逐一执行各自的功能,

第四,实例化对象进行操作!代码如下:

//应用程序实例$ Action=new Action();$action-register(新Cat());$ action-register(new People());$action-register(新Dog());$ action-notify();在这里,我想如果我理解错了什么,请提出建议。当然,这只是观察者模式的一个简单过程,实际发展会有一些变化。当然,大致的脉络是这样的!

另一个个人观点是,如果需要了解各种开发模式的应用,就必须了解它能够解决的需求。面向对象编程来源于生活,应用于生活,然后我们就可以理解架构定义的代码(说白了就是可以把想法变成代码实现,通过代码得到我们想要的结果)。其实不是为了别的,只是为了加深印象,也是为了帮助其他同行业的朋友!

更多对PHP相关内容感兴趣的读者可以查看本网站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》、《php常见数据库操作技巧汇总》、0103010

希望本文对PHP编程有所帮助。

版权声明:对PHP观察者模式的深入理解和应用分析是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。