成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

PHP設(shè)計(jì)模式(十):適配器模式

paney129 / 657人閱讀

摘要:原文地址設(shè)計(jì)模式十適配器模式在設(shè)計(jì)模式七設(shè)計(jì)模式分類中我們提到過(guò)結(jié)構(gòu)設(shè)計(jì)模式,結(jié)構(gòu)設(shè)計(jì)模式專注于設(shè)計(jì)對(duì)象和實(shí)例的構(gòu)建組合過(guò)程。適配器模式在不修改現(xiàn)有代碼的基礎(chǔ)上,保留了架構(gòu)。

原文地址:PHP設(shè)計(jì)模式(十):適配器模式

Introduction

在PHP設(shè)計(jì)模式(七):設(shè)計(jì)模式分類中我們提到過(guò)結(jié)構(gòu)設(shè)計(jì)模式(Structural patterns),結(jié)構(gòu)設(shè)計(jì)模式專注于設(shè)計(jì)對(duì)象(Object)和實(shí)例(Instance)的構(gòu)建、組合過(guò)程。
結(jié)構(gòu)設(shè)計(jì)模式包括下面七種設(shè)計(jì)模式:

適配器(Adapter)

橋接(Bridge)

合成(Composite)

裝飾(Decorator)

外部(Facade)

輕量(Flyweight)

代理(Proxy)

請(qǐng)無(wú)視拗口的中文翻譯。結(jié)構(gòu)設(shè)計(jì)模式著重于低耦合、高復(fù)用、高可維護(hù)性、高拓展性的設(shè)計(jì)原則。

適配器模式

適配器模式是一種利用適配器將現(xiàn)有的實(shí)現(xiàn),適配到已有接口的設(shè)計(jì)模式,最常見的例子就是變壓器,將已有的5V輸入的電器,通過(guò)變壓器,適配到220V的電源插座。
適配器模式利用PHP設(shè)計(jì)模式(四):繼承中我們提到過(guò)的繼承(inheritance),以及PHP設(shè)計(jì)模式(六):MVC中我們提到過(guò)的組件(composition)來(lái)進(jìn)行模式設(shè)計(jì)。
相比繼承,組件可用性高,低耦合,冗余度低,因此推薦采用組件的模式來(lái)進(jìn)行設(shè)計(jì)。

何時(shí)使用適配器模式?

簡(jiǎn)單來(lái)說(shuō),當(dāng)你的實(shí)現(xiàn)和需要的接口,都無(wú)法修改的時(shí)候。
例如,你需要給甲方已有的系統(tǒng)做標(biāo)準(zhǔn)的兼容,標(biāo)準(zhǔn)不可修改,甲方的系統(tǒng)也不可修改,這個(gè)時(shí)候你就需要適配器的設(shè)計(jì)模式了。
對(duì)于web編程來(lái)說(shuō),將你現(xiàn)有的實(shí)現(xiàn),和三方庫(kù)結(jié)合起來(lái),就需要使用適配器模式。

使用繼承的適配器模式

簡(jiǎn)單來(lái)說(shuō),就是:

還是用前面的鯨魚和鯉魚的例子來(lái)說(shuō)明如何使用適配器,假設(shè)我們已經(jīng)實(shí)現(xiàn)了鯨魚類和鯉魚類:

name = "Whale";
  }
  public function eatFish() {
    echo "Whale eat fish.
";
  }
}
class Carp {
  public function __construct() {
    $this->name = "Carp";
  }
  public function eatMoss() {
    echo "Carp eat moss.
";
  }
}
?>

假設(shè)我們現(xiàn)在需要建一個(gè)動(dòng)物館,有eatFish()和eatMoss()接口,動(dòng)物館接口如下:

但是我們不能修改Whale和Carp類,這里就需要使用適配器了,創(chuàng)建兩個(gè)適配器:

name = "Whale";
  }
  public function eatMoss() {
    echo "Whale don"t eat moss.
";
  }
}
class CarpAdapter extends Carp implements Animal {
  public function __construct() {
    $this->name = "Carp";
  }
  public function eatFish() {
    echo "Carp don"t eat moss.
";
  }
}
?>

然后是調(diào)用代碼:

eatFish();
$whaleAdapter->eatMoss();
$carpAdapter = new CarpAdapter();
$carpAdapter->eatMoss();
$carpAdapter->eatFish();
?>

運(yùn)行一下:

Whale eat fish.
Whale don"t eat moss.
Carp eat moss.
Carp don"t eat moss.
使用組件的適配器模式

還是使用鯨魚和鯉魚的例子,不過(guò)這個(gè)時(shí)候適配器變成了:

name = "Whale";
    $this->whale = new Whale();
  }
  public function eatFish() {
    $this->whale->eatFish();
  }
  public function eatMoss() {
    echo "Whale don"t eat moss.
";
  }
}
class CarpAdapter implements Animal {
  public function __construct() {
    $this->name = "Carp";
    $this->carp = new Carp();
  }
  public function eatFish() {
    echo "Carp don"t eat moss.
";
  }
  public function eatMoss() {
    $this->carp->eatMoss();
  }
}
?>

其他的地方和使用繼承的適配器模式一樣,這里不再贅述。

Summary

適配器模式在不修改現(xiàn)有代碼的基礎(chǔ)上,保留了架構(gòu)。使用繼承的適配器和使用組件的適配器各有利弊,繼承的類冗余度/空間復(fù)雜度偏高,組件的調(diào)用棧/時(shí)間復(fù)雜度偏高,應(yīng)該結(jié)合實(shí)際情況選擇。

(本文出自csprojectedu.com,轉(zhuǎn)載請(qǐng)注明出處)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/21716.html

相關(guān)文章

  • php設(shè)計(jì)模式

    摘要:我們今天也來(lái)做一個(gè)萬(wàn)能遙控器設(shè)計(jì)模式適配器模式將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。今天要介紹的仍然是創(chuàng)建型設(shè)計(jì)模式的一種建造者模式。設(shè)計(jì)模式的理論知識(shí)固然重要,但 計(jì)算機(jī)程序的思維邏輯 (54) - 剖析 Collections - 設(shè)計(jì)模式 上節(jié)我們提到,類 Collections 中大概有兩類功能,第一類是對(duì)容器接口對(duì)象進(jìn)行操作,第二類是返回一個(gè)容器接口對(duì)象,上節(jié)我們介紹了...

    Dionysus_go 評(píng)論0 收藏0
  • php設(shè)計(jì)模式

    摘要:我們今天也來(lái)做一個(gè)萬(wàn)能遙控器設(shè)計(jì)模式適配器模式將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。今天要介紹的仍然是創(chuàng)建型設(shè)計(jì)模式的一種建造者模式。設(shè)計(jì)模式的理論知識(shí)固然重要,但 計(jì)算機(jī)程序的思維邏輯 (54) - 剖析 Collections - 設(shè)計(jì)模式 上節(jié)我們提到,類 Collections 中大概有兩類功能,第一類是對(duì)容器接口對(duì)象進(jìn)行操作,第二類是返回一個(gè)容器接口對(duì)象,上節(jié)我們介紹了...

    vspiders 評(píng)論0 收藏0
  • PHP基礎(chǔ)

    摘要:分別為適配器模式,裝飾器模式,代理模式,外觀模式,橋接模式,組合模式,享元模式。設(shè)計(jì)模式五適配器模式適配器模式將某個(gè)對(duì)象的接生成器和協(xié)程的實(shí)現(xiàn)在這篇文章中,作者針對(duì)那些比較難以理解的概念,以一個(gè)更為通俗的方式去講明白。。 PHP 源碼注解 PHP 的詳細(xì)源碼注解 PHP 字符串操作整理 一些有關(guān)字符串的常用操作。 Redis 常見七種使用場(chǎng)景 (PHP 實(shí)戰(zhàn)) 這篇文章主要介紹利用 R...

    HtmlCssJs 評(píng)論0 收藏0
  • JS 設(shè)計(jì)模式 配器模式

    摘要:適配器模式是指將一個(gè)接口轉(zhuǎn)換成客戶端希望的另外一個(gè)接口,該模式使得原本不兼容的類可以一起工作。適配器有種角色目標(biāo)抽象角色定義客戶所期待的使用接口。接口源角色需要被適配的接口。接口適配器角色把源接口轉(zhuǎn)換成符合要求的目標(biāo)接口的設(shè)備。 適配器模式 是指將一個(gè)接口轉(zhuǎn)換成客戶端希望的另外一個(gè)接口,該模式使得原本不兼容的類可以一起工作。舉個(gè)例子:macbook pro有一個(gè)HDMI接口,一條HDM...

    mochixuan 評(píng)論0 收藏0
  • PHP設(shè)計(jì)模式(七)配器模式(Adapter For PHP

    摘要:適配器模式將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口,使得原本由于接口不兼容而不能一起工作的那些類可以在一起工作。如下待適配對(duì)象電子書翻頁(yè)電子書打開客戶端測(cè)試輸出結(jié)果電子書打開電子書翻頁(yè) 適配器模式:將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口,使得原本由于接口不兼容而不能一起工作的那些類可以在一起工作。 showImg(https://segmentfault.com/img/bVbi...

    silvertheo 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<