5.php观察者模式
来源:互联网 发布:app开发用什么软件 编辑:程序博客网 时间:2024/04/30 15:25
有些开发人员说:“WEB开发是所有开发类型中最难最复杂的。”说这句话的原因就是因为我们会面对各种不确定的因素,用户输入、平台、屏幕大小等等等等。。。。有这样一种情况,我们的产品能让用户选择不同的背景颜色,我们对各种颜色的背景经过数据分析后发现文字颜色,文字字体,文字大小都要变化才能达到最佳的效果,这些样式因数分别在不同的对象中,我们怎么让这些因数随同背景颜色变化。观察者模式就是用来在一个因素变化后通知其他对象,改变因数。
这个类就是引起变化的类
<?phpclass Observer{ //用来保存要通知的不同对象 private static $objarray = array(); private $color; function __construct($color){ $this->color = $color; } //改变参数用的方法 public function changcolor($color){ $this->color = $color; $this->call($color); } //添加观察者 public static function addobserver($name, $obj){ $name = strtolower($name); self::$objarray[$name] = $obj; } //删除相应的观察者 public static function subtractobserver($name){ $name = strtolower($name); if (!self::$objarray[$name]){ echo "$name对应的对象不存在"; } unset(self::$objarray[$name]); } //向各个对象通知的方法 private function call($color){ foreach (self::$objarray as $key => $value) { $value->change($color); } } }//被通知的第一个对象class Object1{ function change($value){ echo "第一个对象中 要被改成$value<br/>"; }}//被通知的第二个对象class Object2{ function change($value){ echo "第一个对象中 要被改成$value"; }}调用过程有点复杂
//创建引起变化对象$observer = new Observer("#ccc");//创建第一个被变化的对象$obj1 = new Object1();//创建第二个被变化的对象$obj2 = new Object2();//向引起变化的对象中添加对象Observer::addobserver('Object1', $obj1);Observer::addobserver('Object2', $obj2);//尝试引起因素的变化$observer->changcolor('#abcdef');//尝试删除一个对象后是否还有效echo "<br/>";Observer::subtractobserver('Object1');$observer->changcolor('red');这就是传说中的观察者。其实我觉的这个设计模式名字没有起好,应该叫推送者更合适。
0 0
- 5.php观察者模式
- php 观察者设计模式
- php 观察者模式
- 转 php 观察者模式
- PHP 观察者模式
- 观察者模式,PHP
- php 观察者模式
- PHP实现观察者模式
- PHP观察者模式
- PHP 观察者模式
- PHP观察者模式
- PHP观察者模式
- 观察者模式-php
- PHP 观察者模式
- PHP-观察者模式
- PHP设计模式:观察者模式
- php设计模式-观察者模式
- [php] 设计模式 观察者模式
- 【Java基础】采用Filter实现AOP完成统一登录验证
- Android热修复
- JS与OC的交互
- centos7开机没有进入桌面gnome,kde
- 一篇搞定RSA加密与SHA签名|与Java完全同步
- 5.php观察者模式
- Mac 可设置环境变量的位置、查看和添加PATH环境变量
- window.showModalDialog 关闭当前页面刷新父页面
- 华为机试——字符串中出现相同最长字符串
- 【mongoDB】mongoDB学习日记
- Mac添加环境变量的三种方法
- 二,八,十,十六进制之间的转换-C语言
- maven配置实例
- 【c/c++】auto_ptr作用和用法