2018/12/8《大話設計模式》【介面卡模式】
阿新 • • 發佈:2018-12-08
週六上班,心痛的趕腳~
1:什麼是介面卡?
- 小李要去美國旅遊了,到了之後發現,美國插座電壓是 250V 的,自己的國產手機插上去肯定時不行的,這時小李有三種辦法解決這個問題
1:強烈抗議美國沒有 220V插座,要求美國必須在每個插座旁邊在安裝一個 220V插座。
2:自己在美國再買個手機,可以用 250V充電的那種。
3:買個轉接頭,可以把美國 250V的電壓適配成 220V的。
- 你要選了 1,2 ,對不起,打擾了
- 通過上面的例子,引出了介面卡的定義
- 介面卡模式(Adapter),將一個類的介面換成客戶端希望的另一個介面
- 通俗的說,就是我希望可以通過這個介面訪問另一個介面,使得這兩個介面可以提供一套服務。
2:介面卡的使用場景
- 使用了別人的外掛,程式碼,服務,這時就需要有適配器,以防止其他人的改變導致自己的服務崩潰。
- 使用一個已經存在的類,但是你的要求和類不太相同時,應該考慮使用。
- 其實介面卡大是多數更是一種無奈之舉,產品的開發本身就是會改變的。
- 也就是說,使用原則是,在雙方都不太容易修改的時候使用介面卡。
3:介面卡的實現
- 根據上面我們瞭解到,介面卡需要三個角色,被適配物件,適配者,介面卡
- 這裡我們先寫一個被適配物件
class operation1 { public function operation(){ echo '我是需要適配的物件,我的方法不太好改'; } }
- 介面卡
class Adapter { public function operation() { $operation1 = new operation1(); $operation1->operation(); } }
- 適配者
$Adapter = newAdapter(); $Adapter->operation();
- 這裡我們訪問的 Adapter 其實是 operation1 ,這裡適配了 operation
4:地址