标签:
适配器模式
概述:
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。
解决的问题:
即Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。
模式中的角色:
目标接口(Target) 可以是具体或抽象的类,也可以是接口
适配的类(adaptee) 需要适配的类或适配者
适配器(adpater) 通过包装一个适配者对象,使把原接口转换成目标接口
模式解读:
注:在GoF的设计模式中,对适配器模式讲了两种类型,类适配器模式和对象适配器模式。
由于类适配器模式通过多重继承对一个接口与另一个接口进行匹配,而C#、java等语言
都不支持多重继承,因而这里只是介绍对象适配器。
适配器模式的代码实现
1 <?php 2 3 4 /*目标接口*/ 5 interface Target{ 6 public function request(); 7 } 8 9 10 /*需要适配的类或者适配者*/ 11 class Adaptee { 12 public function specialRequest(){ 13 echo ‘this is a specialRequest‘; 14 } 15 } 16 17 /*适配器*/ 18 class Adapter implements Target { 19 20 21 22 private $adaptee = null; 23 24 public function __construct(){ 25 $this->adaptee = new Adaptee(); 26 } 27 28 public function request() 29 { 30 $this->adaptee->specialRequest(); 31 } 32 } 33 34 35 /*查看测试结果*/ 36 $adapter = new Adapter(); 37 $adapter->request();
如下是输出结果
模式总结
缺点:
对于对象适配器来说,更换适配器的实现过程比较复杂。
适用场景:
标签:
原文地址:http://www.cnblogs.com/Super-Man/p/4423594.html