学习PHP设计模式PHP来实现适配器模式
1。意图将一个类的接口转换为客户需要的另一个接口。
两。适配器模式结构图
三。适配器模式中的主要角色
目标(目标)角色:定义客户端使用的特定于域的特定接口,这是我们期望的。
受改造者的角色:一个接口,需要适应
适配器(Adapter)作用:Adaptee和目标接口的适应性;适配器是该模式的核心;适配器把源接口目标接口,和这个角色是特定的类。
四。适配器模式应用场景
1。您希望使用现有的类,它的接口不符合您的需要。
2。您希望创建一个可重用类,该类可以与其他不相关的类或不可预见类一起工作。
3,您希望使用现有的子类,但不可能将每个子类与它们的接口相匹配。对象适配器可以匹配其父类接口(仅与对象适配器)匹配。
五。类适配器模式和对象适配器
类适配器:适配器和Adaptee的继承关系
1,与特定的适配器类和目标相匹配。结果是,当我们想要一个与类及其所有子类相匹配的类时,类适配器将不能工作。
2、使适配器可以重新定义的受改造者的行为的一部分,因为适配器是受改造者的子集
三.介绍一个对象,并没有额外的指针是需要获得一种间接受改造者
对象适配器:适配器和受改造者是委托关系
1,允许一个适配器工作多受改造者在同一时间。适配器也可以在同一时间所有Adaptee添加功能
2。很难用受改造者的重新定义
适配器模式和其他模式
网桥模式(桥接模式):网桥模式类似于对象适配器,但网桥模式的起点不同。桥接模式的目的是将接口部分与实现部分分开,以便它们可以相对容易且相对独立。对象适配器模式意味着改变现有对象的接口。
装饰模式(装饰模式):装饰模式在不改变界面的情况下增强了其他对象的功能,因此,装饰模式的透明性优于应用程序的适配器。
六类适配器模式php示例
类适配器使用继承。
< PHP
*目标的作用
* /
接口的目标{
*源类也有方法1
* /
公共功能samplemethod1();
*源类没有方法2。
* /
公共功能samplemethod2();
}
*源的作用
* /
类受改造者{
*源类包含的方法
* /
公共功能samplemethod1(){
echo'adaptee samplemethod1;
}
}
*类适配器角色
* /
类适配器扩展受改造者实现目标{
*有没有samplemethod2源类的方法,补充在这里
* /
公共功能samplemethod2(){
echo'adapter samplemethod2;
}
}
客户端类{
*主程序。
* /
公共静态函数main(){
$适配器=新适配器();
$适配器-> samplemethod1();
$适配器-> samplemethod2();
}
}
客户::主();
>
七。对象适配器模式php示例
对象适配器被委派。
< PHP
*目标的作用
* /
接口的目标{
*源类也有方法1
* /
公共功能samplemethod1();
*源类没有方法2。
* /
公共功能samplemethod2();
}
*源的作用
* /
类受改造者{
*源类包含的方法
* /
公共功能samplemethod1(){
echo'adaptee samplemethod1;
}
}
*类适配器角色
* /
类适配器实现目标{
私人_adaptee美元;
公共功能__construct(受改造者为受改造者){
美元-> _adaptee = $受改造者;
}
*代表称受改造者的samplemethod1方法
* /
公共功能samplemethod1(){
这_adaptee美元-> -> samplemethod1();
}
*有没有samplemethod2源类的方法,补充在这里
* /
公共功能samplemethod2(){
echo'adapter samplemethod2;
}
}
客户端类{
*主程序。
* /
公共静态函数main(){
美元受改造者=新受改造者();
新的适配器,适配器=美元(美元受改造者);
$适配器-> samplemethod1();
$适配器-> samplemethod2();
}
}
客户::主();
>
以上是使用php实现的适配器模式代码,和一些适配器模式的概念进行区分,希望对您有所帮助。