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

首頁 > 學院 > 開發設計 > 正文

適配器設計模式

2019-11-17 02:42:34
字體:
來源:轉載
供稿:網友

適配器設計模式

適配器設計模式

定義:

將一個類的接口轉換成客戶希望的另一個接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。

這么聽來是不是感覺特別的神奇,其實適配器在生活中隨處可見,就比如我們現在所使用的筆記本來舉例子,大家都知道一般家用的插座的電壓是220v,那么對于筆記本基本能夠接受的電壓是19V,如何能夠讓筆記本通電就需要用到一個適配器來使用一個輸入為220V的電壓轉換成一個輸出19V的電壓到筆記本端。適配器就是將原本不適合的東西轉換成我們想要的最終結果。

在開發中我們能夠要與外部的廠家進行交互,有的時候我們已經開發完成的一整套系統,可會因為很多的原因致使廠家的更換 ,那么如何不改變原有的系統代碼的情況下使用這個新的廠家的接口呢,那么我們就需要一個適配器要將進行類的包裝。

clip_image002

例子:

首先我們看一來系統的類圖,通過下圖可以發現我們原有的系統獲取的是一個文本類型的數據,而新的接口里面獲取的是一個整型,如何不改變原有的接口的情況下使用新的接口,我們在需要添加一個適配器。

clip_image003

clip_image004

上圖就是我們所添加的一個適配器,我們這個Adapter繼續的是IInhere類,我們集成的這個類之后我們添加一個NewClass的對象,然后我們在調用IInhere的時候使用的其實是newClass這個類中的方法。

代碼:

原有廠家接口:

public interface IInhere    {        string text        {            get;            set;        }             string getText();        void setText(string text);    }
class InhereClass:IInhere    {        public string text { get; set; }        public string getText()        {            return text;        }        public void setText(string text)        {            this.text = text;        }    }

新的廠家接口:

interface INew    {        int number        {            get;            set;        }        int getNumber();        void setNumber(int number);    }
class NewClass:INew    {        public int number { get; set; }        public int getNumber()        {            return this.number;        }        public void setNumber(int number)        {            this.number = number;        }    }

適配器代碼:

class Adapter:IInhere    {                PRivate NewClass newClass=new NewClass();        public string text { get; set; }        public string getText()        {            return newClass.getNumber().ToString();        }        public void setText(string text)        {            try            {                newClass.setNumber(Convert.ToInt32(text));            }            catch (ArgumentException ex)            {                throw new ArgumentException("傳入錯誤,請傳入一個有效的數字的字符形式");            }        }    }

測試代碼

static void Main(string[] args)        {            InhereClass _inhereClass=new InhereClass();            _inhereClass.setText("10");            Console.WriteLine(_inhereClass.getText());            NewClass _iNew = new NewClass();            _iNew.setNumber(100);            Console.WriteLine(_iNew.getNumber());            IInhere adapter=new Adapter();            adapter.setText("1000");            Console.WriteLine(adapter.getText());        }

結果:

clip_image005

總結:

我們發現原有的廠家接口用的是String類型,但是新的廠家接口用的卻是Int類型,我們在其中添加一個Adapter類來進行數據的包裝和處理,這樣我們的系統根據不用關心新的廠家是什么類型,因為最終都會通過Adapter轉換成我們想要的類型來進行相應的處理。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 金塔县| 鹤岗市| 东阿县| 仁化县| 南和县| 桃江县| 平顶山市| 峨眉山市| 尉犁县| 棋牌| 太仓市| 大田县| 大荔县| 成安县| 吴江市| 张家界市| 贞丰县| 富宁县| 江孜县| 开远市| 土默特左旗| 通海县| 白朗县| 东海县| 井冈山市| 蚌埠市| 渭南市| 保山市| 石门县| 如东县| 鸡泽县| 通江县| 常德市| 安徽省| 邹城市| 青阳县| 丘北县| 甘孜县| 渭源县| 巴中市| 贺州市|