PHP设计模式之适配器模式原理与用法分析
本文实例讲述了PHP设计模式之适配器模式原理与用法。分享给大家供大家参考,具体如下:
一、什么是适配器模式
适配器模式有两种:类适配器模式和对象适配器模式。其中类适配器模式使用继承方式,而对象适配器模式使用组合方式。由于类适配器模式包含双重继承,而PHP并不支持双重继承,所以一般都采取结合继承和实现的方式来模拟双重继承,即继承一个类,同时实现一个接口。类适配器模式很简单,但是与对象适配器模式相比,类适配器模式的灵活性稍弱。采用类适配器模式时,适配器继承被适配者并实现一个接口;采用对象适配器模式时,适配器使用被适配者,并实现一个接口。
二、什么时候使用适配器模式
适配器模式的作用就是解决兼容性问题,如果需要通过适配(使用多重继承或组合)来结合两个不兼容的系统,那就使用适配器模式。
三、类适配器模式
以货币兑换为例:
product=$product;
$this->service=$service;
$this->dollar=$this->product+$this->service;
return$this->requestTotal();
}
publicfunctionrequestTotal()
{
$this->dollar*=$this->rate;
return$this->dollar;
}
}
//欧元计算类
classEuroCalc
{
private$euro;
private$product;
private$service;
public$rate=1;
publicfunctionrequestCalc($product,$service)
{
$this->product=$product;
$this->service=$service;
$this->euro=$this->product+$this->service;
return$this->requestTotal();
}
publicfunctionrequestTotal()
{
$this->euro*=$this->rate;
return$this->euro;
}
}
//欧元适配器接口
interfaceITarget
{
functionrequester();
}
//欧元适配器实现
classEuroAdapterextendsEuroCalcimplementsITarget
{
publicfunction__construct()
{
$this->requester();
}
functionrequester()
{
$this->rate=.8111;
return$this->rate;
}
}
//客户类
classClient
{
private$euroRequest;
private$dollarRequest;
publicfunction__construct()
{
$this->euroRequest=newEuroAdapter();
$this->dollarRequest=newDollarCalc();
$euro="";
echo"Euros:$euro".$this->makeAdapterRequest($this->euroRequest)."
";
echo"Dollars:$".$this->makeDollarRequest($this->dollarRequest);
}
privatefunctionmakeAdapterRequest(ITarget$req)
{
return$req->requestCalc(40,50);
}
privatefunctionmakeDollarRequest(DollarCalc$req)
{
return$req->requestCalc(40,50);
}
}
$client=newClient();
?>
运行结果:
Euros:72.999
Dollars:$90
四、对象适配器模式
以桌面环境转向移动环境为例:
mobile=$mobile;
}
publicfunctionformatCSS()
{
$this->mobile->formatCSS();
}
publicfunctionformatGraphics()
{
$this->mobile->formatGraphics();
}
publicfunctionhorizontalLayout()
{
$this->mobile->verticalLayout();
}
}
//客户类
classClient
{
private$mobile;
private$mobileAdapter;
publicfunction__construct()
{
$this->mobile=newMobile();
$this->mobileAdapter=newMobileAdapter($this->mobile);
$this->mobileAdapter->formatCSS();
$this->mobileAdapter->formatGraphics();
$this->mobileAdapter->horizontalLayout();
}
}
$client=newClient();
?>
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。