1.Intent 将一个类的接口转换成客户想要的另一个接口。Adapter模式使那些由于接口不兼容而无法协同工作的类能够协同工作。 2.Adapter模式结构图 3.adapter模式中的主要角色 Target(目标)角色:定义客户端使用的domain-specific接口,也就是我们所期望的。 Source(Adaptee)角色:需要适配的接口。 适配器(Adapter)作用:适配Adaptee接口和Target接口;适配器是该模式的核心,适配器将源接口转换为目标接口,这个角色是一个具体的类。 4.适配模式适用场景 1.你想使用一个已有的类,但它的接口不符合你的需要; 2.你想创建一个可重用的类,它可以与其他不相关的类或不可预见的类一起工作; 3.您想使用现有的子类,但不可能对每个子类进行子类化以匹配它们的接口。对象适配器可以适配其超类接口(仅限对象适配器)。 5.类适配器模式和对象适配器类适配器 1.使用特定的Adapter类来匹配Target。结果是,当我们要匹配一个类及其所有子类时,Adapter类将无法胜任; 2、使Adapter可以重新定义Adaptee的部分行为,因为Adapter是Adaptee的子集; 3。只引入一个对象,不需要额外的指针来间接获取适配者。 对象适配器:Adapter和Adaptee是委托关系 1。允许一个Adapter和多个Adaptee同时工作。Adapter也可以一次给所有Adaptee添加功能; 2.很难使用重新定义的Adaptee行为。 Adapter模式与其他模式 桥接模式(bridgemode):桥接模式类似于对象适配器,但是桥接模式的出发点不同:桥接模式的目的是分离接口部分从实现部分,这样他们可以更容易也相对独立地改变。对象适配器模式意味着更改现有对象的接口。 装饰模式(decoratormode):装饰模式在不改变其界面的情况下增强了其他对象的功能。因此,装饰模式比适配器对应用程序更透明。 6.类适配器模式PHP示例 类适配器使用继承';}}/***ClassAdapter作用*/classAdapterextendsAdapteeimplementsTarget{/***源类中没有sampleMethod2方法,在这里添加*/publicfunctionsampleMethod2(){echo'AdaptersampleMethod2
';}}classClient{/***主程序。*/publicstaticfunctionmain(){$adapter=newAdapter();$适配器->sampleMethod1();$适配器->sampleMethod2();}}客户端::主();?> 7.对象适配器模式PHP示例 对象适配器使用委托';}}/***ClassAdapter角色*/classAdapterimplementsTarget{private$_adaptee;公共函数__construct(Adaptee$adaptee){$this->_adaptee=$adaptee;}/***委托调用Adaptee的sampleMethod1方法*/publicfunctionsampleMethod1(){$this->_adaptee->sampleMethod1();}/***源类中没有sampleMethod2方法,在这里添加*/publicfunctionsampleMethod2(){echo'AdaptersampleMethod2
';}}classClient{/***主程序。*/publicstaticfunctionmain(){$adaptee=newAdaptee();$adapter=newAdapter($adaptee);$适配器->sampleMethod1();$适配器->sampleMethod2();}}客户端::main();?&g吨;
