关于 观察者模式

      前几天在书上看了关于设计模式中“观察者模式”的讲解,刚好公司有一个新的任务,就是为公司的招聘网站写一个定时向企业用户或个人用户发邮件(内容分别为简历信息和职位信息)的功能。做程序也有半年多了,觉得自己有进步的其中一点就是,不再是拿到功能就马上动手写代码,而是先去分析完成功能要的步骤。话说回来,俗话说的好,学以致用,于是我就花了点时间去想这“观察者模式”和我现在要写的东西有没有联系,其实我心理想着:“就算没联系我也要把它联起来,体验一下“观察者模式”。嘻嘻...”,最后还真把它们联系起来了,但不知道其中有多少是真正从这“观察者模式”中领悟出来的。

     php中有为“观察者模式”设计好的接口,分别是:

再来看看完成我公司的需求的步骤:

      首先要从数据库中拿出筛选后的数据(筛选这个步骤一开始我还不确定是否用mysql就能完成,可能要借助php,所以设计接口时有为此做保留),再用这些数据去查数据库,从返回的结果中做一些逻辑处理,最后将处理后的数据通过email发送出去。

根据上面的步骤,我把要发送的“简历信息”和“职位信息” 当做两个 observer,把要发送email的这个动作当成是它们要监听subject的动作,于是得出了下面的接口方案:(由于关系到公司方面的问题,下面的代码只是写出了大体的设计思想)

 

上面我没有让实现类直接继承IObserver接口,因为实现类的操作很多都重复了,所以我就多加了一个Send_Abstract做为最终实现类的父类,并把相同的代码写在了父类,这种思想好像也是一种设计模式 = =! 忘记叫什么了.... 。

我没有使用php SPL中的 SplObserver,不过现在想起来使用SplObserver也不错,SplObserver中只要求实现一个update方法,上面的代码可以改为,如果Send_Abstract的两个子类继承IObserver接口的方法的执行顺序一样,就可以将上面的代码

写到Send_Abstract的update方法中,否则写入继承Send_Abstract的两个子类的update方法中,这样还可以控制方法的执行顺序。

 

平生写的第一篇对于技术方面的文章。还真不知道上面的方面和思想有没有误导人 = =!,留个纪念就好,以后还要坚持把学到的东西记录下来。。。。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值