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

學習php設計模式 php實現(xiàn)適配器模式

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

一、意圖
將一個類的接口轉換成客戶希望的另外一個接口。Adapter模式使得原來由于接口不兼容而不能一起工作的那此類可以一起工作
二、適配器模式結構圖

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

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

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

<?php
/**
 * 目標角色
 */
interface Target {
 
  /**
   * 源類也有的方法1
   */
  public function sampleMethod1();
 
  /**
   * 源類沒有的方法2
   */
  public function sampleMethod2();
}
 
/**
 * 源角色
 */
class Adaptee {
 
  /**
   * 源類含有的方法
   */
  public function sampleMethod1() {
    echo 'Adaptee sampleMethod1 <br />';
  }
}
 
/**
 * 類適配器角色
 */
class Adapter implements Target {
 
  private $_adaptee;
 
  public function __construct(Adaptee $adaptee) {
    $this->_adaptee = $adaptee;
  }
 
  /**
   * 委派調(diào)用Adaptee的sampleMethod1方法
   */
  public function sampleMethod1() {
    $this->_adaptee->sampleMethod1();
  }
 
  /**
   * 源類中沒有sampleMethod2方法,在此補充
   */
  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實現(xiàn)適配器模式的代碼,還有一些關于適配器模式的概念區(qū)分,希望對大家的學習有所幫助。

相關文章

  • 一個簡單且很好用的php分頁類

    一個簡單且很好用的php分頁類

    一個簡單且很好用的php分頁類。需要的朋友可以過來參考下,希望對大家有所幫助
    2013-10-10
  • php實現(xiàn)的遍歷文件夾下所有文件,編輯刪除

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

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

    Ajax+PHP 邊學邊練之四 表單

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

    刪除無限分類并同時刪除它下面的所有子分類的方法

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

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

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

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

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

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

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

    php采用session實現(xiàn)防止頁面重復刷新

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

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

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

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

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

最新評論

梁山县| 中西区| 盐山县| 射洪县| 马关县| 桓台县| 保亭| 当阳市| 达拉特旗| 新兴县| 尚义县| 南雄市| 启东市| 吉木萨尔县| 甘南县| 道孚县| 尼勒克县| 泸州市| 乌海市| 清新县| 米泉市| 江都市| 鱼台县| 洪湖市| 灌阳县| 师宗县| 喀喇| 汾西县| 社旗县| 新化县| 册亨县| 永平县| 高州市| 汾阳市| 罗定市| 三河市| 平远县| 顺平县| 嘉荫县| 榆社县| 手游|