最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

學(xué)習(xí)php設(shè)計(jì)模式 php實(shí)現(xiàn)適配器模式

 更新時(shí)間:2015年12月07日 16:18:19   作者:胖胖  
這篇文章主要介紹了php設(shè)計(jì)模式中的適配器模式,使用php實(shí)現(xiàn)適配器模式,感興趣的小伙伴們可以參考一下

一、意圖
將一個(gè)類(lèi)的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。Adapter模式使得原來(lái)由于接口不兼容而不能一起工作的那此類(lèi)可以一起工作
二、適配器模式結(jié)構(gòu)圖

三、適配器模式中主要角色
目標(biāo)(Target)角色:定義客戶端使用的與特定領(lǐng)域相關(guān)的接口,這也就是我們所期待得到的
源(Adaptee)角色:需要進(jìn)行適配的接口
適配器(Adapter)角色:對(duì)Adaptee的接口與Target接口進(jìn)行適配;適配器是本模式的核心,適配器把源接口轉(zhuǎn)換成目標(biāo)接口,此角色為具體類(lèi)
四、適配器模式適用場(chǎng)景
1、你想使用一個(gè)已經(jīng)存在的類(lèi),而它的接口不符合你的需求
2、你想創(chuàng)建一個(gè)可以復(fù)用的類(lèi),該類(lèi)可以與其他不相關(guān)的類(lèi)或不可預(yù)見(jiàn)的類(lèi)協(xié)同工作
3、你想使用一個(gè)已經(jīng)存在的子類(lèi),但是不可能對(duì)每一個(gè)都進(jìn)行子類(lèi)化以匹配它們的接口。對(duì)象適配器可以適配它的父類(lèi)接口(僅限于對(duì)象適配器)
五、類(lèi)適配器模式與對(duì)象適配器
類(lèi)適配器:Adapter與Adaptee是繼承關(guān)系
1、用一個(gè)具體的Adapter類(lèi)和Target進(jìn)行匹配。結(jié)果是當(dāng)我們想要一個(gè)匹配一個(gè)類(lèi)以及所有它的子類(lèi)時(shí),類(lèi)Adapter將不能勝任工作
2、使得Adapter可以重定義Adaptee的部分行為,因?yàn)锳dapter是Adaptee的一個(gè)子集
3、僅僅引入一個(gè)對(duì)象,并不需要額外的指針以間接取得adaptee
對(duì)象適配器:Adapter與Adaptee是委托關(guān)系
1、允許一個(gè)Adapter與多個(gè)Adaptee同時(shí)工作。Adapter也可以一次給所有的Adaptee添加功能
2、使用重定義Adaptee的行為比較困難
適配器模式與其它模式
橋梁模式(bridge模式):橋梁模式與對(duì)象適配器類(lèi)似,但是橋梁模式的出發(fā)點(diǎn)不同:橋梁模式目的是將接口部分和實(shí)現(xiàn)部分分離,從而對(duì)它們可以較為容易也相對(duì)獨(dú)立的加以改變。而對(duì)象適配器模式則意味著改變一個(gè)已有對(duì)象的接口
裝飾器模式(decorator模式):裝飾模式增強(qiáng)了其他對(duì)象的功能而同時(shí)又不改變它的接口。因此裝飾模式對(duì)應(yīng)用的透明性比適配器更好。
六、類(lèi)適配器模式PHP示例
類(lèi)適配器使用的是繼承

<?php
/**
 * 目標(biāo)角色
 */
interface Target {
 
  /**
   * 源類(lèi)也有的方法1
   */
  public function sampleMethod1();
 
  /**
   * 源類(lèi)沒(méi)有的方法2
   */
  public function sampleMethod2();
}
 
/**
 * 源角色
 */
class Adaptee {
 
  /**
   * 源類(lèi)含有的方法
   */
  public function sampleMethod1() {
    echo 'Adaptee sampleMethod1 <br />';
  }
}
 
/**
 * 類(lèi)適配器角色
 */
class Adapter extends Adaptee implements Target {
 
  /**
   * 源類(lèi)中沒(méi)有sampleMethod2方法,在此補(bǔ)充
   */
  public function sampleMethod2() {
    echo 'Adapter sampleMethod2 <br />';
  }
 
}
 
class Client {
 
  /**
   * Main program.
   */
  public static function main() {
    $adapter = new Adapter();
    $adapter->sampleMethod1();
    $adapter->sampleMethod2();
 
  }
 
}
 
Client::main();
?>

七、對(duì)象適配器模式PHP示例
對(duì)象適配器使用的是委派

<?php
/**
 * 目標(biāo)角色
 */
interface Target {
 
  /**
   * 源類(lèi)也有的方法1
   */
  public function sampleMethod1();
 
  /**
   * 源類(lèi)沒(méi)有的方法2
   */
  public function sampleMethod2();
}
 
/**
 * 源角色
 */
class Adaptee {
 
  /**
   * 源類(lèi)含有的方法
   */
  public function sampleMethod1() {
    echo 'Adaptee sampleMethod1 <br />';
  }
}
 
/**
 * 類(lèi)適配器角色
 */
class Adapter implements Target {
 
  private $_adaptee;
 
  public function __construct(Adaptee $adaptee) {
    $this->_adaptee = $adaptee;
  }
 
  /**
   * 委派調(diào)用Adaptee的sampleMethod1方法
   */
  public function sampleMethod1() {
    $this->_adaptee->sampleMethod1();
  }
 
  /**
   * 源類(lèi)中沒(méi)有sampleMethod2方法,在此補(bǔ)充
   */
  public function sampleMethod2() {
    echo 'Adapter sampleMethod2 <br />';
  }
 
}
 
class Client {
 
  /**
   * Main program.
   */
  public static function main() {
    $adaptee = new Adaptee();
    $adapter = new Adapter($adaptee);
    $adapter->sampleMethod1();
    $adapter->sampleMethod2();
 
  }
 
}
 
Client::main();
?>

以上就是使用php實(shí)現(xiàn)適配器模式的代碼,還有一些關(guān)于適配器模式的概念區(qū)分,希望對(duì)大家的學(xué)習(xí)有所幫助。

相關(guān)文章

  • 一個(gè)簡(jiǎn)單且很好用的php分頁(yè)類(lèi)

    一個(gè)簡(jiǎn)單且很好用的php分頁(yè)類(lèi)

    一個(gè)簡(jiǎn)單且很好用的php分頁(yè)類(lèi)。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-10-10
  • php實(shí)現(xiàn)的遍歷文件夾下所有文件,編輯刪除

    php實(shí)現(xiàn)的遍歷文件夾下所有文件,編輯刪除

    遍歷文件夾; 功能:(a)可刪除文件 (b)可編輯文本,網(wǎng)頁(yè)文件 (c)可刪除文件夾,前提是該文件夾為空 (d)可建立文件,文件夾,修改文件夾名稱(chēng)
    2010-01-01
  • Ajax+PHP 邊學(xué)邊練之四 表單

    Ajax+PHP 邊學(xué)邊練之四 表單

    通過(guò)上一篇文章已經(jīng)了解到如何利用Ajax和PHP對(duì)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)讀取,這樣可以動(dòng)態(tài)的獲取到數(shù)據(jù)庫(kù)的最新數(shù)據(jù)。本篇?jiǎng)t繼續(xù)介紹通過(guò)表單(Form)向數(shù)據(jù)庫(kù)中寫(xiě)入數(shù)據(jù)。
    2009-11-11
  • 刪除無(wú)限分類(lèi)并同時(shí)刪除它下面的所有子分類(lèi)的方法

    刪除無(wú)限分類(lèi)并同時(shí)刪除它下面的所有子分類(lèi)的方法

    今天晚上上Q的時(shí)候 ,一個(gè)以前的學(xué)員在網(wǎng)上問(wèn)我,怎么刪除一個(gè)無(wú)限分類(lèi)的時(shí)候同時(shí)刪除它下面的所有子分類(lèi)。我把代碼稍微整理了一下,發(fā)出來(lái),放在php學(xué)員問(wèn)答里面,方便以后的人查看 。
    2010-08-08
  • php隨機(jī)顯示指定文件夾下圖片的方法

    php隨機(jī)顯示指定文件夾下圖片的方法

    這篇文章主要介紹了php隨機(jī)顯示指定文件夾下圖片的方法,涉及array_rand隨機(jī)數(shù)組操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • 8個(gè)PHP數(shù)組面試題

    8個(gè)PHP數(shù)組面試題

    這篇文章主要介紹了8個(gè)PHP數(shù)組面試題,例如寫(xiě)函數(shù)創(chuàng)建長(zhǎng)度為10的數(shù)組,數(shù)組中的元素為遞增的奇數(shù),首項(xiàng)為1、創(chuàng)建長(zhǎng)度為10的數(shù)組,數(shù)組中的數(shù)為遞增的等比數(shù),比值為3,首項(xiàng)為等題目,需要的朋友可以參考下
    2015-06-06
  • PHP 命令行工具 shell_exec, exec, passthru, system詳細(xì)使用介紹

    PHP 命令行工具 shell_exec, exec, passthru, system詳細(xì)使用介紹

    PHP 為執(zhí)行外部命令提供大量函數(shù),其中包括 shell_exec()、exec()、passthru() 和 system()。這些命令是相似的,但為您運(yùn)行的外部程序提供不同的界面。
    2011-09-09
  • php采用session實(shí)現(xiàn)防止頁(yè)面重復(fù)刷新

    php采用session實(shí)現(xiàn)防止頁(yè)面重復(fù)刷新

    這篇文章主要介紹了php采用session實(shí)現(xiàn)防止頁(yè)面重復(fù)刷新的代碼及使用方法,需要的朋友可以參考下
    2015-12-12
  • php+jQuery ajax實(shí)現(xiàn)的實(shí)時(shí)刷新顯示數(shù)據(jù)功能示例

    php+jQuery ajax實(shí)現(xiàn)的實(shí)時(shí)刷新顯示數(shù)據(jù)功能示例

    這篇文章主要介紹了php+jQuery ajax實(shí)現(xiàn)的實(shí)時(shí)刷新顯示數(shù)據(jù)功能,結(jié)合實(shí)例形式分析了php結(jié)合jQuery ajax實(shí)時(shí)刷新讀取顯示數(shù)據(jù)庫(kù)數(shù)據(jù)相關(guān)操作技巧,需要的朋友可以參考下
    2019-09-09
  • php使用str_replace替換多維數(shù)組的實(shí)現(xiàn)方法分析

    php使用str_replace替換多維數(shù)組的實(shí)現(xiàn)方法分析

    這篇文章主要介紹了php使用str_replace替換多維數(shù)組的實(shí)現(xiàn)方法,結(jié)合具體實(shí)例對(duì)比分析了php針對(duì)多維數(shù)組的遍歷與替換操作相關(guān)實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下
    2017-06-06

最新評(píng)論

罗源县| 五大连池市| 锡林浩特市| 古交市| 南川市| 安远县| 泸定县| 本溪| 进贤县| 鄂州市| 潼关县| 页游| 芮城县| 镇远县| 定西市| 墨玉县| 融水| 鄂托克前旗| 上虞市| 抚州市| 博客| 大庆市| 大足县| 克山县| 甘南县| 桐梓县| 英德市| 罗田县| 彭泽县| 玉溪市| 罗江县| 仙居县| 黄梅县| 兴仁县| 苏尼特右旗| 平江县| 江都市| 富蕴县| 龙川县| 涿州市| 渝北区|