学习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实现的适配器模式代码,和一些适配器模式的概念进行区分,希望对您有所帮助。