国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > PHP > 正文

PHP設(shè)計(jì)模式之適配器模式原理與用法分析

2024-05-05 00:03:23
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了PHP設(shè)計(jì)模式之適配器模式原理與用法。分享給大家供大家參考,具體如下:

一、什么是適配器模式

適配器模式有兩種:類適配器模式和對(duì)象適配器模式。其中類適配器模式使用繼承方式,而對(duì)象適配器模式使用組合方式。由于類適配器模式包含雙重繼承,而PHP并不支持雙重繼承,所以一般都采取結(jié)合繼承和實(shí)現(xiàn)的方式來(lái)模擬雙重繼承,即繼承一個(gè)類,同時(shí)實(shí)現(xiàn)一個(gè)接口。類適配器模式很簡(jiǎn)單,但是與對(duì)象適配器模式相比,類適配器模式的靈活性稍弱。采用類適配器模式時(shí),適配器繼承被適配者并實(shí)現(xiàn)一個(gè)接口;采用對(duì)象適配器模式時(shí),適配器使用被適配者,并實(shí)現(xiàn)一個(gè)接口。

二、什么時(shí)候使用適配器模式

適配器模式的作用就是解決兼容性問(wèn)題,如果需要通過(guò)適配(使用多重繼承或組合)來(lái)結(jié)合兩個(gè)不兼容的系統(tǒng),那就使用適配器模式。

三、類適配器模式

以貨幣兌換為例:

<?php/***  類適配器模式*        以貨幣兌換為例**///美元計(jì)算類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;  }}//歐元計(jì)算類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();}//歐元適配器實(shí)現(xiàn)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();?>

運(yùn)行結(jié)果:

Euros: 72.999
Dollars: $90

四、對(duì)象適配器模式

以桌面環(huán)境轉(zhuǎn)向移動(dòng)環(huán)境為例:

<?php/***  對(duì)象適配器模式*         從桌面環(huán)境轉(zhuǎn)向移動(dòng)環(huán)境**///桌面布局接口interface IFormat{  public function formatCSS();  public function formatGraphics();  public function horizontalLayout();}//桌面布局類實(shí)現(xiàn)class Desktop implements IFormat{  public function formatCSS()  {    //調(diào)用桌面布局CSS文件  }  public function formatGraphics()  {    //調(diào)用圖片  }  public function horizontalLayout()  {    //桌面水平布局  }}//移動(dòng)布局接口interface IMobileFormat{  public function formatCSS();  public function formatGraphics();  public function verticalLayout();}//移動(dòng)布局類實(shí)現(xiàn)class Mobile implements IMobileFormat{  public function formatCSS()  {    //調(diào)用移動(dòng)布局CSS文件  }  public function formatGraphics()  {    //調(diào)用圖片  }  public function verticalLayout()  {    //移動(dòng)垂直布局  }}//移動(dòng)布局適配器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();?>

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到PHP教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 玉溪市| 翼城县| 大安市| 星座| 芦溪县| 石狮市| 温宿县| 雅安市| 黄陵县| 无为县| 阳江市| 德格县| 尉犁县| 南昌市| 宜黄县| 汝州市| 商河县| 磴口县| 偏关县| 涟水县| 霍山县| 广饶县| 玉环县| 南宫市| 绥阳县| 汤原县| 工布江达县| 石家庄市| 金门县| 淄博市| 泰顺县| 栾川县| 乳山市| 奉贤区| 杭锦旗| 大名县| 莲花县| 海安县| 仲巴县| 呼玛县| 余干县|