php--观察者模式

小说:象样游戏官方网站作者:帝帝更新时间:2019-03-26字数:43895

也对,形势比人强,民谣摇滚等音乐式微是事实,哪怕《那些花儿》火了,也没法逆转潮流,他不可能靠着民谣或是摇滚吃一辈子,还是得走上流行的路,那还是别和豆苗扯上关系的好。

最火的斗地主赢现金

同样的,那烛龙之火在灵凝体内危害她生命的时候,那自然便是“火毒”。而现在,它与灵凝的心火融在一起,又与其它四气互相扶持,相互制约,成为了她身体内的一部分,那自然也就不再是“毒”了。
罗夫人心中难受,泪水涌了出来,李庆安低声安慰她道:“夫人放心,我会尽全力替你找回儿子。”

好歹在娱乐圈里浸.淫.了多年,自认深谙流行趋势,赵书锋知道《不怕不怕》这首歌的底子,可谓上上等。

php--观察者模式


一、定义

  观察者模式(Observer),当一个对象的状态发生改变时,依赖他的对象会全部收到通知,并自动更新。

#观察者模式利用“组合”将许多观察者组合进主题中。对象(观察者——主题)之间的这种关系不是通过继承产生的,而是在运行时利用组合的方式产生的。 ——多用组合,少用继承!

 

二、应用场景

  一个事件发生后,要执行一连串更新操作.传统的编程方式,就是在事件的代码之后直接加入处理逻辑,当更新得逻辑增多之后,代码会变得难以维护.这种方式是耦合的,侵入式的,增加新的逻辑需要改变事件主题的代码

# 今天正好遇到了一个观察者模式的使用

# 功能需要:我的项目代码中需要添加一个上传图片的功能,但是上传图片完成后需要做一件事。图片数据保存至数据库

# 分析:如果我们将代码逻辑操作,图片路径写入了数据库,后期修改了表的格式,或者添加了其他的字段,我们都需要留意上传图片的这边的代码,这样是不利于代码的统一维护的。

# 问题:能否将两者分离开, 上传完图片及自动触发 储存图片数据的代码,但储存图片数据又不写在上传图片的逻辑中?

# 解决: 上传图片是library层的操作, 存储图片数据是model层的操作。将两者关联,在上传图片完成前调用方法添加存储图片数据model(观察者),
# 图片上传完成后,触发存储图片数据model(观察者)的方法保存图片数据至数据类

 

三、实现过程

  两个原则

# 1、封闭开放原则
对于功能实现,是封闭的,
但对功能的内容是开放的

对修改是封闭的
对扩展时开放的



# 2、多用组合,少用扩展
类与类之间存在关联关系,可以相互借用对方的方法,而不是添加更多的逻辑代码

类的扩展不易过多,层级过多容易发生混乱

  

  功能需要:图片上传完成,保存图片数据至数据

 1 <?php
 2 
 3 class upload
 4 {
 5     public function register($obj)
 6     {
 7         $this->_observers[] = $obj;
 8     }
 9 
10     public function trigger($data= null)
11     {
12         if (!empty($this->_observers)) {
13             foreach ($this->_observers as $obj) {
14                 $obj->add_upload();
15             }
16         }
17 
18     }
19     public function html5upload()
20     {
21         #.....
22         $this->trigger();
23     }
24 }
25 
26 class picture_model
27 {
28     public function add_upload()
29     {
30         echo "图片存储成功";
31     }
32 }
33 
34 $upload = new upload();
35 $upload->register(new picture_model());
36 $upload->html5upload();
上面代码的简单实现

 

四、总结

  当某个事件(逻辑)完成,需要执行其他关联事件(逻辑)时,可使用此模式。

 

  

 

当前文章:http://zxqss.com/R/75337.html

发布时间:2019-03-26 10:27:56

9158乐乐棋牌游戏 3a棋牌官网下载 金币换现金的棋牌游戏 金币捕鱼棋牌游戏下载 左右棋牌游戏破解软件 2004旧版单机斗地主 千术揭秘免费视频 联通短信充值亲朋账号

编辑:成邓

我要说两句: (0人参与)

发布