PHP委托模式详解及案例
程序员文章站
2022-04-01 20:33:23
...
本篇文章主要介绍PHP委托模式详解及案例,感兴趣的朋友参考下,希望对大家有所帮助。
委托模式
通过分配或委托其他对象,委托设计模式能够去除核心对象中的判决和复杂的功能性。
应用场景
1.设计了一个cd类,类中有mp3播放模式,和mp4播放模式
2.改进前,使用cd类的播放模式,需要在实例化的类中去判断选择什么方式的播放模式
3.改进后,播放模式当做一个参数传入playList函数中,就自动能找到对应需要播放的方法。
代码:cd类,未改进之前,选择播放模式是一种痛苦的事情
<?php //委托模式-去除核心对象中的判决和复杂的功能性 //使用委托模式之前,调用cd类,选择cd播放模式是复杂的选择过程 class cd { protected $cdInfo = array(); public function addSong($song) { $this->cdInfo[$song] = $song; } public function playMp3($song) { return $this->cdInfo[$song] . '.mp3'; } public function playMp4($song) { return $this->cdInfo[$song] . '.mp4'; } } $oldCd = new cd; $oldCd->addSong("1"); $oldCd->addSong("2"); $oldCd->addSong("3"); $type = 'mp3'; if ($type == 'mp3') { $oldCd->playMp3(); } else { $oldCd->playMp4(); }
代码:通过委托模式,改进后的cd类
<?php //委托模式-去除核心对象中的判决和复杂的功能性 //改进cd类 class cdDelegate { protected $cdInfo = array(); public function addSong($song) { $this->cdInfo[$song] = $song; } public function play($type, $song) { $obj = new $type; return $obj->playList($this->cdInfo, $song); } } class mp3 { public function playList($list) { return $list[$song]; } } class mp4 { public function playList($list) { return $list[$song]; } } $newCd = new cd; $newCd->addSong("1"); $newCd->addSong("2"); $newCd->addSong("3"); $type = 'mp3'; $oldCd->play('mp3', '1'); //只要传递参数就能知道需要选择何种播放模式
相关推荐:
以上就是PHP委托模式详解及案例的详细内容,更多请关注其它相关文章!
推荐阅读
-
JavaScript 函数模式详解及示例
-
详解PHP中cookie和session的区别及cookie和session用法小结,cookiesession
-
php:switch case 和 if else 的用法区别及运行效率详解
-
详解DedeCMS不支持PHP5.3、5.4及以上版本后台500错误白屏的解决方法
-
新手学PHP之数据库操作详解及乱码解决!_php基础
-
详解及案例介绍Javascript装饰器原理
-
PHP json_encode() 函数详解及中文乱码问题,
-
php以CGI 模式安装时可能遇到的攻击及解决办法
-
php 设计模式之工厂模式详解
-
php数组转换js数组操作及json_encode的用法详解