1 模式介绍
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。
2 模式中的角色
2.1 目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。
2.2 需要适配的类(Adaptee):需要适配的类或适配者类。
2.3 适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。
3 模式结构
4 项目应用
4.1 设计一个通用2口插头。
4.2 源码设计
<?php
/**
* 接口适配器
* copyright (c) http://blog.csdn.net/CleverCode
*/
//期望的工作标准是2个接口的插头
interface ITarget
{/*{{{*/
public function powerWithTwoRound();
}/*}}}*/
//美国插头(Adaptee)
class USAWork
{/*{{{*/
//插头工作
public function plugWork()
{
echo "美国插头开始工作\r\n";
}
}/*}}}*/
//美国插头适配器。适配期望标准可用。
class USAAdapter implements ITarget
{/*{{{*/
public $adaptee;
public function __construct()
{
$this->adaptee = new USAWork();
}
public function powerWithTwoRound()
{
echo "适配器开始工作\r\n";
echo "将美国插头转化成为标准插头工作\r\n";
$this->adaptee->plugWork();
}
}/*}}}*/
class Client
{
public static function main($argv)
{
//使用美国适配器
$uSAAdapter = new USAAdapter();
$uSAAdapter->powerWithTwoRound();
}
}
Client::main($argv);
?>
4.3 结果展示
4.3 结果展示
技术交流
CleverCode是一名架构师,技术交流,咨询问题,请加CleverCode创建的qq群(架构师俱乐部):517133582。加群和腾讯,阿里,百度,新浪等公司的架构师交流。【架构师俱乐部】宗旨:帮助你成长为架构师!