国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 網絡通信 > 正文

適配器模式解析例子

2020-04-18 12:53:46
字體:
來源:轉載
供稿:網友
  本文深入淺出的講述了設計模式中的適配器模式,并給出了簡單的示例,例子淺顯易懂,并附帶源代碼。   適配器模式中的有以下的四種角色: 目標(target):定義客戶端使用的與特定領域相關的接口。被適配者(adaptee):定義了一個已經存在的接口,這個接口需要匹配。適配者(adapter):Adaptee的接口與target的接口進行適配。客戶端(Client):與符合target接口的對象協同。適配器模式的意圖是將一個類的接口轉換成客戶希望的另外的一個接口。Adapter 模式使得原來由于幾口不兼容而不能一起工作的雷可以一起工作。舉例來說:有一個類(adaptee)實現了數學中的冪次運算,方法中需要傳入兩個參數,一個是基數base,另外一個是冪次exp。現在客戶端需要一個求得一個數的平方的函數接口(target),傳入一個數,得到它的平方值。為了復用已經存在的類adaptee,適用Adapter來適配adaptee,adapter實現了target接口。使用UML圖表示以上的描述如下:



1適配器模式 客戶端調用target的接口方法,具體的實現(adapter)把需求適配給Adaptee,最終調用Adaptee的方法來實現客戶端的調用請求。目標接口定義如下所示;      package adapter;public interface Target{    public long get2Power(long exp);} Adaptee的接口定義如下所示:package adapter;public class Adaptee{    public long getPower(long base,long exp){       long result=1;       for(int i=0;i<exp;i++)           result*=base;       return result;    }}適配器(adapter)的接口定義如下所示:package adapter;public class Adapter implements Target{    private Adaptee pt;    public Adapter(){       pt = new Adaptee();    }    public long get2Power(long exp){       return pt.getPower(2,exp);    }}客戶端的定義如下:package adapter;public class Client{    public static void main(String[] args){       long exp=5;       Target t= new Adapter();       String str = " 2 power "+exp+"=";       str +=t.get2Power(exp);       System.out.println(str);    }}適用性:你想使用一個已經存在的類,而他的接口不符合你的需求。你想創建一個可以復用的類,該類可以與其他不相關的類或不可預見的類協同工作。你想使用一些已經已經存在的子類,但是不可能對每一個都進行子類化已一匹配他們的接口,對象適配器可以適配他的父類接口。 適配器如同一個常見的變壓器,也如同電腦的變壓器和插線板之間的電源連接線,他們雖然都是3相的,但是電腦后面的插孔卻不能直接插到插線板上。 作者曾經遇到過一個ASP編程的難題,asp不是面向對象的,但是卻可以借鑒適配器模式解決問題。問題是這樣的,在一個產品表(product)中的所有產品都有一個編號,字段名字是bh,每個編號是唯一的,但卻不是主鍵,表中使用一個自動增長的id作為主鍵。在產品的詳情頁中使用傳過來的參數id查詢產品,而在另外的一個系統中也有一個同樣的表,需要訪問詳情頁(已經由另外的一個程序員設計好,并且代碼晦澀難懂),由于字段值是自動增長的,兩個表中的主鍵并不對應(在其中的一個系統中進行刪除添加都會引起id的增長),在具體的實現中,本人在有詳情頁的系統中添加了一個頁面(adapter),接受傳過來的產品編號bh,然后根據編號查找數據庫得到相應產品的駐鍵id,最后讓頁面跳轉到詳情頁并傳遞一個id,在另外的系統中只要得到產品的編號bh,并把bh作為參數傳遞到添加的頁面(adapter)便可以得到正確的結果。   如果覺得寫得好,請一定要支持一下,以給我信心和鼓勵把剩下的模式例子寫出來
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 定兴县| 随州市| 九龙坡区| 专栏| 交口县| 淮安市| 杂多县| 哈巴河县| 探索| 松潘县| 濮阳县| 沙河市| 洪江市| 太谷县| 舞阳县| 区。| 泽州县| 绍兴市| 九江市| 西峡县| 永康市| 印江| 麟游县| 永仁县| 汶川县| 廊坊市| 扎赉特旗| 射阳县| 雷山县| 东辽县| 雷山县| 湾仔区| 明溪县| 贵港市| 靖边县| 织金县| 綦江县| 乐清市| 农安县| 新和县| 南康市|