案例一(來自於php 設計模式 書) - 假設乙個企業**同時銷售軟體服務和軟體產品,目前所有的交易都在美國進行,後續業務決定向歐洲發展要增加貨幣換算(增加介面卡)
案例二是自已設計於活動專題業務上,只是將邏輯摘取出來,**不可直接執行
靈活性擴充套件性都很好
將目標類和適配者類解耦
目標(target):定義乙個客戶端使用的特定介面。
客戶端(client):使用目標介面,與和目標介面一致的物件合作。
被適配者(adaptee):乙個現存需要適配的介面。
介面卡(adapter):負責將adaptee的介面轉換為target的介面。介面卡是乙個具體的類,這是該模式的核心。
介面卡分為類介面卡和物件介面卡兩種,下面將詳細講述。
來自 php 設計模式 一書的介面卡設計模式案例**
/**
* eurocalc.php
* 美元 - 能累加購買的服務和產品的** 來自於php 設計模式
*/class dollarcalc
private function requestcount()
}/**
* eurocalc.php
* 歐元 - 能累加購買的服務和產品的**
*/class eurocalc
private function requestcount()
}/**
* 介面 itarget.php
*/inte***ce itarget
/** * 例:找乙個合適的介面卡來適合歐洲的插座一樣,以下就是建立這個介面卡
* euroadapter 實現了乙個介面又擴充套件了乙個類
*/class euroadapter extends eurocalc implements itarget
public function requester()
}/**
* 使用者
*/class client
public function makeadapterrequest(itarget $req)
public function makedollarrequest(dollarcalc $req)
}$worker = new client();
**例子(**只顯示對應的設計邏輯部分)
<?php
/** * 介面卡模式 - **介面
* comment 當後台規則不滿足自動化,可以新增對應的介面卡,增加**的復用
* author at
*/namespace controller;
// 每個月份對應的介面卡 06年3月 = sixmarch
use \adapter\sixmarch\lotteryadapter;
/** * **介面 入口檔案
*/final class lottery extends webcontroller
public function _lottery()
}namespace controller;
/** *
*/class lotteryadapter extends autolottery implements ilottery
}/**
* adapter_name 該活動對應的介面卡
*/private function adapter_name()
}}namespace controller;
/** * 自動化**介面的基類
*/class autolottery
// 業務邏輯判斷
// 通過則將資料入庫
// 返回結果
return $rs;
}}?>
設計模式 介面卡模式 類介面卡 物件介面卡
乙個小例子,便於理解,上 這是我們造的。現在想用這個方法。public class adaptee 類介面卡。對我們想要的方法封裝一下,target就能像之前一樣,呼叫request方法即可。public class adapter1 extends adaptee implements targe...
設計模式 介面卡模式(類介面卡和物件介面卡)
如果去歐洲國家去旅遊的話,他們的插座如下圖最左邊,是歐洲標準。而我們使用的插頭如下圖最右邊的。因此我們的膝上型電腦,手機在當地不能直接充電。所以就需要乙個插座轉換器,轉換器第1面插入當地的插座,第2麵供我們充電,這樣使得我們的插頭在當地能使用。生活中這樣的例子很多,手機充電器 將220v轉換為5v的...
介面卡模式應用 電源介面卡
一模式定義 存在兩種介面卡模式 1 物件介面卡模式,在這種介面卡模式中,介面卡容納乙個它包裹的類物件的物理實體。2 類介面卡模式,在這種介面卡模式中,介面卡繼承自已實現的類。二模式舉例 1模式分析 我們借用筆計本電源介面卡來說明這一模式。已經存在的交流電源 膝上型電腦 電源介面卡 2介面卡模式的靜態...