当前位置: 首页 > 后端技术 > PHP

php设计模式的适配器模式

时间:2023-03-30 02:19:59 PHP

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吨;