PHP设计模式之适配器模式原理与用法分析
网络编程 2021-07-05 08:24www.168986.cn编程入门
这篇文章主要介绍了PHP设计模式之适配器模式,简单描述了适配器模式的概念、原理并结合实例形式分析了php类适配器模式与对象适配器模式的具体定义与使用方法,需要的朋友可以参考下
本文实例讲述了PHP设计模式之适配器模式原理与用法。分享给大家供大家参考,具体如下
一、什么是适配器模式
适配器模式有两种类适配器模式和对象适配器模式。其中类适配器模式使用继承方式,而对象适配器模式使用组合方式。由于类适配器模式包含双重继承,而PHP并不支持双重继承,所以一般都采取结合继承和实现的方式来模拟双重继承,即继承一个类,实现一个接口。类适配器模式很简单,与对象适配器模式相比,类适配器模式的灵活性稍弱。采用类适配器模式时,适配器继承被适配者并实现一个接口;采用对象适配器模式时,适配器使用被适配者,并实现一个接口。
二、什么时候使用适配器模式
适配器模式的作用就是解决兼容性问题,如果需要通过适配(使用多重继承或组合)来结合两个不兼容的系统,那就使用适配器模式。
三、类适配器模式
以货币兑换为例
<?php / 类适配器模式 以货币兑换为例 / //美元计算类 class DollarCalc { private $dollar; private $product; private $service; public $rate = 1; public function requestCalc($product,$service) { $this->product = $product; $this->service = $service; $this->dollar = $this->product + $this->service; return $this->requestTotal(); } public function requestTotal() { $this->dollar = $this->rate; return $this->dollar; } } //欧元计算类 class EuroCalc { private $euro; private $product; private $service; public $rate = 1; public function requestCalc($product,$service) { $this->product = $product; $this->service = $service; $this->euro = $this->product + $this->service; return $this->requestTotal(); } public function requestTotal() { $this->euro = $this->rate; return $this->euro; } } //欧元适配器接口 interface ITarget { function requester(); } //欧元适配器实现 class EuroAdapter extends EuroCalc implements ITarget { public function __construct() { $this->requester(); } function requester() { $this->rate = .8111; return $this->rate; } } //客户类 class Client { private $euroRequest; private $dollarRequest; public function __construct() { $this->euroRequest = new EuroAdapter(); $this->dollarRequest = new DollarCalc(); $euro = ""; echo "Euros: $euro" . $this->makeAdapterRequest($this->euroRequest) . "<br />"; echo "Dollars: $" . $this->makeDollarRequest($this->dollarRequest); } private function makeAdapterRequest(ITarget $req) { return $req->requestCalc(40,50); } private function makeDollarRequest(DollarCalc $req) { return $req->requestCalc(40,50); } } $client = new Client(); ?>
运行结果
Euros: 72.999
Dollars: $90
四、对象适配器模式
以桌面环境转向移动环境为例
<?php / 对象适配器模式 从桌面环境转向移动环境 / //桌面布局接口 interface IFormat { public function formatCSS(); public function formatGraphics(); public function horizontalLayout(); } //桌面布局类实现 class Desk implements IFormat { public function formatCSS() { //调用桌面布局CSS文件 } public function formatGraphics() { //调用图片 } public function horizontalLayout() { //桌面水平布局 } } //移动布局接口 interface IMobileFormat { public function formatCSS(); public function formatGraphics(); public function verticalLayout(); } //移动布局类实现 class Mobile implements IMobileFormat { public function formatCSS() { //调用移动布局CSS文件 } public function formatGraphics() { //调用图片 } public function verticalLayout() { //移动垂直布局 } } //移动布局适配器 class MobileAdapter implements IFormat { private $mobile; public function __construct(IMobileFormat $mobile) { $this->mobile = $mobile; } public function formatCSS() { $this->mobile->formatCSS(); } public function formatGraphics() { $this->mobile->formatGraphics(); } public function horizontalLayout() { $this->mobile->verticalLayout(); } } //客户类 class Client { private $mobile; private $mobileAdapter; public function __construct() { $this->mobile = new Mobile(); $this->mobileAdapter = new MobileAdapter($this->mobile); $this->mobileAdapter->formatCSS(); $this->mobileAdapter->formatGraphics(); $this->mobileAdapter->horizontalLayout(); } } $client = new Client(); ?>
更多关于PHP相关内容感兴趣的读者可查看本站专题《》、《》、《》、《》、《》、《》及《》
希望本文所述对大家PHP程序设计有所帮助。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程