PHP设计模式-适配器模式
来源:互联网 发布:制作手写的软件 编辑:程序博客网 时间:2024/04/27 00:50
适配器模式
参考自:http://blog.csdn.net/wzllai/article/details/7832815
适配器模式,可以将截然不同的函数接口封装成统一的API;适配器模式将一个类的接口,转换成客户期望的另一个接口;是的原本由于接口不兼容无法一起工作的类可以一起工作;解决兼容性;透明:通过适配器,客户端可以调用同一个接口,因而对客户端来说是透明的,这样做更简单、更直接、更紧凑。重用:复用了现存的类,解决了现存类和复用环境要求不一致的问题。低耦合:将目标类和适配者类解耦,通过引入一个适配器类重用现用的适配者类,而无需修改原有代码。(遵循开闭原则)
应用场景:
PHP的数据库操作有mysql,mysqli,pdo3种,可以用适配器模式统一成一致。类似的像memcache,redis,file,apc等不同的缓存函数统一成一致;适配器作为一个中间层来实现不同功能转换。适配器模式不适合在详细设计阶段使用它,它是一种补偿模式,专用来在系统后期扩展、修改时所用。
类适配器:(使用继承方式实现)
client类最终面对的是Target接口(或者抽象类),它只能使用符合这个标准的子类(Adapter)。
类适配器(Adapter)继承原有的Adaptee类,自己实现原有类没有的操作,从而达到适配。client可以透明调用Adaptee中的特殊功能。
interface ITarget { function operation1(); function operation2(); } interface IAdaptee { function operation1(); } class Adaptee extends IAdaptee { public function operation1() { echo "原方法"; } } class Adapter extends Adaptee implements IAdaptee, ITarget { public function operation2() { echo "适配方法"; } } class Client { public function test() { $adapter = new Adapter(); $adapter->operation1();//原方法 $adapter->operation2();//适配方法 } }
对象适配器:(使用组合模式实现)
将adaptee作为adapter的一个引用。用该引用来调用所有adaptee中的方法。同时adapter实现客户期望的接口,达到适配。
由于组合在耦合性小于继承,对象适配器更加灵活。缺点就是增加代码量,需要重写adapee中的方法量。
interface ITarget { function operation1(); function operation2(); } interface IAdaptee { function operation1(); } class Adaptee extends IAdaptee { public function operation1() { echo "原方法"; } } class Adapter implements ITarget { private $adaptee; public function __construct($adaptee) { $this->adaptee = $adaptee; } public function operation1() { return $this->adaptee->operation1(); } public function operation2() { echo "适配方法"; } } class Client { public function test() { $adapter = new Adapter(new Adaptee(null)); $adapter->operation1();//原方法 $adapter->operation2();//适配方法 } } //如果adapee中的方法量比较大的话,可以考虑再adapter中使用__call方法来委托取得客户端调用的方法。 public function __call($func, $args) { if (is_callable(array($this->adaptee, $func))) { return $this->adaptee->$func($args); } trigger_error('*********', E_USER_ERROR); }
未完待续……….
0 0
- PHP设计模式--适配器模式
- PHP设计模式-适配器模式
- php-设计模式--适配器模式
- PHP设计模式-适配器模式
- PHP设计模式系列 - 适配器
- PHP设计模式系列 - 适配器
- PHP设计模式系列 - 适配器
- PHP之设计模式—适配器模式
- 设计模式php实例:适配器模式
- PHP设计模式-适配器模式
- PHP设计模式-适配器模式
- php中的设计模式之--适配器模式
- PHP设计模式——适配器模式
- PHP设计模式之适配器模式
- php设计模式之适配器模式
- PHP设计模式之适配器模式
- PHP设计模式之适配器模式
- 《PHP设计模式》之 适配器模式
- Java理论知识--类和对象
- 解决“只能通过Chrome网上应用商店安装该程序”的方法
- 开博,开播
- Jquery基本选择器总结
- Maven 手动添加 JAR 包到本地仓库
- PHP设计模式-适配器模式
- Yii2中多表关联查询(join、joinwith)学习笔记
- adb 使用的一点命令
- Android实现不重复启动APP的方法
- Android碎片化与兼容性问题的元凶
- Git标签管理
- Linux中启动和停止jar包的运行
- UCOS2_STM32F1移植详细过程(四)
- Android Button自动触发点击事件