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程序设计有所帮助。