PHP
发布时间:2022-04-09 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了学习php设计模式 php实现适配器模式,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_403_0@<span style="color: #800000">
一、意图
@H_
489_3@
将
一个类的接口转换成客户希望的另外
一个接口。Adapter模式使得原来由于接口不兼容而不能一起工作的那此类可以一起工作@H_
489_3@
<span style="color: #800000">
二、适配器模式结构图
@H_
489_3@
<p style="text-align: center">
@H_489_3@
<p style="text-align: center">
@H_
489_3@
@H_
403_0@<span style="color: #800000">
三、适配器模式中主要角色
@H_
489_3@
目标(Target)角色:定义客户端使用的与特定领域相关的接口,这也就是我们所期待得到的@H_
489_3@
源(Adapte
E)角色:需要进行适配的接口@H_
489_3@
适配器(Adapter)角色:对Adaptee的接口与Target接口进行适配;适配器是本模式的核心,适配器把源接口转换成目标接口,此角色为具体类@H_
489_3@
<span style="color: #800000">
四、适配器模式适用场景
1、你想使用一个已经存在的类,而它的接口不符合你的需求
2、你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类协同工作
3、你想使用一个已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口(仅限于对象适配器)
五、类适配器模式与对象适配器
类适配器:
Adapter与Adaptee是继承关系
1、用
一个具体的Adapter类和Target进行匹配。结果是当我们想要
一个匹配
一个类以及所有它的子类时,类Adapter将不能胜任工作
2、使得Adapter可以重定义Adaptee的部分行为,因为Adapter是Adaptee的
一个子集
3、仅仅引入
一个对象,并不需要额外的指针以间接取得adaptee
对象适配器:
Adapter与Adaptee是委托关系
1、允许
一个Adapter与多个Adaptee同时工作。Adapter也可以一次给所有的Adaptee
添加功能
2、使用重定义Adaptee的行为比较困难
适配器模式与其它模式
桥梁模式(bridge模式):桥梁模式与对象适配器类似,但是桥梁模式的出发点不同:桥梁模式目的是将接口部分和实现部分分离,从而对它们可以较为容易也相对独立的加以改变。而对象适配器模式则意味着改变
一个已有对象的接口
装饰器模式(decorator模式):装饰模式增强了其他对象的
功能而同时又不改变它的接口。因此装饰模式对应用的透明性比适配器更好。
六、类适配器模式PHP示例
类适配器使用的是继承
php;">
<>PHP
/**
* 目标角色
*/
interface Target {
/**
- 源类也有的方法1@H_489_3@
*/@H_489_3@
public function sampleMethod1();
/**
- 源类没有的方法2@H_489_3@
*/@H_489_3@
public function sampleMethod2();@H_489_3@
}
/**
- 源角色@H_489_3@
*/@H_489_3@
class Adaptee {
/**
- 源类含有的方法@H_489_3@
*/@H_489_3@
public function sampleMethod1() {@H_489_3@
echo 'Adaptee sampleMethod1 @H_489_3@';@H_489_3@
}@H_489_3@
}
/**
- 类适配器角色@H_489_3@
*/@H_489_3@
class Adapter extends Adaptee implements Target {
/**
- 源类中没有sampleMethod2方法,在此补充@H_489_3@
*/@H_489_3@
public function sampleMethod2() {@H_489_3@
echo 'Adapter sampleMethod2 @H_489_3@';@H_489_3@
}
}
class Client {
/**
@H_620_52@main program.@H_489_3@
*/@H_489_3@
public static function main() {@H_489_3@
$adapter = new Adapter();@H_489_3@
$adapter->sampleMethod1();@H_489_3@
$adapter->sampleMethod2();
}
}
Client::main();@H_489_3@
?>
大佬总结
以上是大佬教程为你收集整理的学习php设计模式 php实现适配器模式全部内容,希望文章能够帮你解决学习php设计模式 php实现适配器模式所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。