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

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

適配器模式

2019-11-09 19:05:34
字體:
來源:轉載
供稿:網友

適配器模式

主要目標: 對接口進行轉換

參考資料:

設計模式 適配器模式 以手機充電器為例

java設計模式初探之適配器模式

設計模式學習九:適配器模式

適配器模式

1. 定義

將一個類的接口轉換成客戶期望的另一個接口,適配器讓原本接口不兼容的類可以相互合作。這個定義還好,說適配器的功能就是把一個接口轉成另一個接口。

2. 理解、

image

如題目,手機充電器一般都是5V左右吧,咱天朝的家用交流電壓220V,所以手機充電需要一個適配器(降壓器)

3.解決問題

主要解決在軟件系統中,常常要將一些”現存的對象”放到新的環境中,而新環境要求的接口是現對象不能滿足的。

4. 何時使用:

1、系統需要使用現有的類,而此類的接口不符合系統的需要。2、想要建立一個可以重復使用的類,用于與一些彼此之間沒有太大關聯的一些類,包括一些可能在將來引進的類一起工作,這些源類不一定有一致的接口。3、通過接口轉換,將一個類插入另一個類系中。(比如老虎和飛禽,現在多了一個飛虎,在不增加實體的需求下,增加一個適配器,在里面包容一個虎對象,實現飛的接口。)

5.解決方式

繼承或依賴(推薦)

6.注意點

適配器繼承或依賴已有的對象,實現想要的目標接口

7.應用實例

1、美國電器 110V,中國 220V,就要有一個適配器將 110V 轉化為 220V。 2、JAVA JDK 1.1 提供了 Enumeration 接口,而在 1.2 中提供了 Iterator 接口,想要使用 1.2 的 JDK,則要將以前系統的 Enumeration 接口轉化為 Iterator 接口,這時就需要適配器模式。 3、在 linux 上運行 WINDOWS 程序。 4、JAVA 中的 jdbc。

8. 優缺點

優點:1、可以讓任何兩個沒有關聯的類一起運行。2、提高了類的復用。3、增加了類的透明度。 4、靈活性好。缺點:1、過多地使用適配器,會讓系統非常零亂,不易整體進行把握。比如,明明看到調用的是 A 接口,其實內部被適配成了 B 接口的實現,一個系統如果太多出現這種情況,無異于一場災難。因此如果不是很有必要,可以不使用適配器,而是直接對系統進行重構。 2.由于 JAVA 至多繼承一個類,所以至多只能適配一個適配者類,而且目標類必須是抽象類。

9. 注意點

使用場景:有動機地修改一個正常運行的系統的接口,這時應該考慮使用適配器模式。注意事項:適配器不是在詳細設計時添加的,而是解決正在服役的項目的問題。

示例代碼

首先一部手機:Mobile.java

public class Mobile { /** * 充電 * @param power */ public void inputPower(V5Power power) { int PRovideV5Power = power.provideV5Power(); System.out.println("手機(客戶端):我需要5V電壓充電,現在是-->" + provideV5Power + "V"); } }

可以看出,手機依賴一個提供5V電壓的接口:

/** * 提供5V電壓的一個接口 * @author zhy * */ public interface V5Power { public int provideV5Power(); }

然后我們擁有的是220V家用交流電:

/** * 家用220V交流電 * @author zhy * */ public class V220Power { /** * 提供220V電壓 * @return */ public int provideV220Power() { System.out.println("我提供220V交流電壓。"); return 220 ; }

下面我們需要一個適配器,完成220V轉5V的作用:

/** * 適配器,把220V電壓變成5V * @author zhy * */ public class V5PowerAdapter implements V5Power { /** * 組合的方式 */ private V220Power v220Power ; public V5PowerAdapter(V220Power v220Power) { this.v220Power = v220Power ; } @Override public int provideV5Power() { int power = v220Power.provideV220Power() ; //power經過各種操作-->5 System.out.println("適配器:我悄悄的適配了電壓。"); return 5 ; } }

最后測試,我們給手機沖個電:

public class Test { public static void main(String[] args) { Mobile mobile = new Mobile(); V5Power v5Power = new V5PowerAdapter(new V220Power()) ; mobile.inputPower(v5Power); } } 輸出:現有類:我提供220V交流電壓。 適配器:我悄悄的適配了電壓。 手機(客戶端):我需要5V電壓充電,現在是-->5V

可以看出,我們使用一個適配器完成了把220V轉化了5V然后提供給手機使用,且我們使用了組合(OO設計原則),原有的手機,以及200V電壓類都不需要變化,且手機(客戶端)和220V(被適配者)完全解耦。

image


上一篇:觀察者模式

下一篇:單例模式

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 盐源县| 康马县| 大连市| 阿荣旗| 泗水县| 贵州省| 柏乡县| 板桥市| 涪陵区| 治多县| 海兴县| 仲巴县| 马尔康县| 雅安市| 海阳市| 龙州县| 巧家县| 紫金县| 搜索| 札达县| 桂林市| 蒲江县| 莫力| 昭觉县| 遵义县| 鄯善县| 荣昌县| 蒙山县| 平乐县| 沾化县| 广东省| 政和县| 丽水市| 吉林省| 收藏| 神池县| 石首市| 库车县| 保定市| 青河县| 天祝|