一看就懂系列之 php设计模式(二)
来源:互联网 发布:天健医疗软件 编辑:程序博客网 时间:2024/05/14 05:40
友情链接:一看就懂系列之 php设计模式(一)
前言
今天看到一句话说的非常好:“设计模式更多想表达的是一种想法,而并非具体的代码实现”。
设计模式
观察者模式
不得不承认网上很多写观察者模式的文章,但多数都是看过去觉得不是很好理解,确实观察者模式不是很好理解,我只是写写自己的理解。
我的理解
1.定义两个接口:观察者接口、被观察者接口(主题)
2.定义两部分类:
-被观察者(主题)的实现类,包括注册函数,取消注册函数,运行函数(也叫通知函数)
-观察者的类,每个类都继承被观察者接口,并且各自实现自己的复杂的逻辑过程。
3.使用前每个观察者的类需要先通过注册函数注册,最后统一由运行函数(也叫通知函数)统一执行
使用姿势
1.当系统中某段逻辑特别复杂特别长藕合度特别高的时候,可以尝试观察者模式,进行解耦,每个部分都拆开来定义类,最后再统一执行。可以减少到处实例化类的麻烦。
2.项目中使用场景多存在于复杂的业务模块,使用观察者模式防止日积月累后,文件冗长,导致后续维护困难。
伪代码实现
<?php/** * 观察者模式 */interface PaperObserver //观察者接口{ function register($sub); //注册函数 function trigger(); //执行函数(也叫通知函数)} class Paper implements PaperObserver{ /* 主题 */ private $_observers = array(); public function register($sub){ /* 注册观察者 */ $this->_observers[] = $sub; } public function trigger(){ /* 外部统一访问 */ if(!empty($this->_observers)){ foreach($this->_observers as $observer){ $observer->update(); } } }}/** * 观察者要实现的接口 */interface Observerable{ public function update();}class Subscriber implements Observerable{ public function update(){ echo "Callback\n"; }}/* 测试 */$paper = new Paper();$paper->register(new Subscriber());//$paper->register(new Subscriber1());//$paper->register(new Subscriber2());$paper->trigger();
0 0
- 一看就懂系列之 php设计模式(二)
- 一看就懂系列之 php设计模式(一)
- 一看就懂系列之 php设计模式(零)
- 一看就懂的设计模式(二,工厂模式)
- 一看就懂系列之 php中的生产者and消费者模式
- 一看就懂系列之 异步执行
- 一看就懂系列之 MVC
- 一看就懂系列之 feed的php具体实现细节
- 一看就懂系列之 protobuf的php版的教程
- 一看就懂系列之 如何实现与控制php常驻进程
- 一看就懂系列之 构建一套简单但规范的php代码上线流程
- 一看就懂系列之 由浅入深聊一聊php的垃圾回收机制
- 一看就懂系列之 如何实现与控制php常驻进程
- 一看就懂的设计模式(三 ,外观模式)
- 一看就懂的设计模式(四,策略模式)
- 白话java 设计模式 ,你一看就懂的
- 一看就懂的单例设计模式
- 一看就懂系列之 Mysql主从延迟分析
- windows客户端开发--xmpp协议gloox库
- APP控制网络连接速率,实现网络情况复现 ATC原理
- Codeforces 549C The Game Of Parity【博弈】
- BestCoder Round #75
- 网络命令一览表
- 一看就懂系列之 php设计模式(二)
- C++最常见面试题解答
- 理论概念方法
- LeetCode110—Balanced Binary Tree
- OpenStack笔记
- 大牛C++编程开发学习建议50条http://blog.csdn.net/gggg_ggg/article/details/44015409
- React Native环境搭建
- 6.伪静态(3) --- 防盗链
- Android libpng error: Not a PNG file错误解决