摘要:時間年月日星期二說明本文部分內容均來自慕課網。慕課網教學源碼學習源碼第一章適配器模式的簡介簡介生活中的適配器翻譯軟件插座適配器適配器模式定義適配器模式講將一個類的接口,轉換成客戶期望的另外一個接口。
時間:2017年08月29日星期二
說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com
教學源碼:https://github.com/zccodere/s...
學習源碼:https://github.com/zccodere/s...
生活中的適配器
翻譯軟件 插座適配器
適配器模式定義
適配器模式講將一個類的接口,轉換成客戶期望的另外一個接口。使得原本由于接口不兼容而不能一起工作的那些類可以在一起工作
適配器模式類圖
適配器分類
1.聚合(組合) 定義:采用聚合(組合)方式的適配器成為對象適配器 特點:把“被適配者”作為一個對象聚合到適配器類中,以修改目標接口包裝被適配者 2.繼承 定義:采用繼承方式的稱為類適配器 特點:通過多重繼承不兼容接口,實現對目標接口的匹配,單一的為某個類而實現適配第二章:適配器模式的實現 2-1 聚合方式
代碼編寫
1.編寫ThreePlug類
package com.myimooc.designpattern.c4adapter; /** * @describe 三相插座接口 * @author zc * @version 1.0 2017-08-29 */ public interface ThreePlug { /** * 使用三相電流供電 */ void powerWithThree(); }
2.編寫GbTwoPlug類
package com.myimooc.designpattern.c4adapter; /** * @describe 二相插座接口 * @author zc * @version 1.0 2017-08-29 */ public class GbTwoPlug { /** * 使用二相電流供電 */ public void powerWithTwo(){ System.out.println("使用二相電流供電"); } }
3.編寫TwoPlugAdapter類
package com.myimooc.designpattern.c4adapter; /** * @describe 二相轉三相的插座適配器-聚合方式 * 怎么實現的 * 1.實現目標接口 ThreePlug * 2.聚合 GbTwoPlug 類到當前適配器類中為成員變量 * 3.把“被適配者”作為一個對象聚合到適配器類中,以修改目標接口包裝被適配者 * @author zc * @version 1.0 2017-08-29 */ public class TwoPlugAdapter implements ThreePlug { private GbTwoPlug plug; public TwoPlugAdapter(GbTwoPlug plug) { this.plug = plug; } @Override public void powerWithThree() { System.out.println("通過轉換-聚合方式"); plug.powerWithTwo(); } }
4.編寫NoteBook類
package com.myimooc.designpattern.c4adapter; /** * @describe 筆記本電腦 * @author zc * @version 1.0 2017-08-29 */ public class NoteBook { /** * 期望使用三相插座進行充電 */ private ThreePlug plug; public NoteBook(ThreePlug plug) { this.plug = plug; } /** * 使用插座進行充電 */ public void charge(){ plug.powerWithThree(); } public static void main(String[] args) { GbTwoPlug two = new GbTwoPlug(); // 使用二相轉三相的適配器 ThreePlug three = new TwoPlugAdapter(two); // 使用三相插座進行充電 NoteBook nb = new NoteBook(three); nb.charge(); } }2-2 繼承方式
代碼編碼
1.編寫TwoPlugAdapterExtends類
package com.myimooc.designpattern.c4adapter; /** * @describe 二相轉三相的插座適配器-繼承方式 * @author zc * @version 1.0 2017-08-29 */ public class TwoPlugAdapterExtends extends GbTwoPlug implements ThreePlug { @Override public void powerWithThree() { System.out.println("通過轉換-繼承方式"); this.powerWithTwo(); } }
2.修改NoteBook類
package com.myimooc.designpattern.c4adapter; /** * @describe 筆記本電腦 * @author zc * @version 1.0 2017-08-29 */ public class NoteBook { /** * 期望使用三相插座進行充電 */ private ThreePlug plug; public NoteBook(ThreePlug plug) { this.plug = plug; } /** * 使用插座進行充電 */ public void charge(){ plug.powerWithThree(); } public static void main(String[] args) { GbTwoPlug two = new GbTwoPlug(); // 使用二相轉三相的適配器 ThreePlug three = new TwoPlugAdapter(two); // 使用三相插座進行充電 NoteBook nb = new NoteBook(three); nb.charge(); three = new TwoPlugAdapterExtends(); nb= new NoteBook(three); nb.charge(); } }第三章:適配器模式的總結 3-1 總結
適配器模式是一種編程思想
只要是把不兼容的轉化成兼容的、匹配的,我們就叫它適配器
模式的變體
適配器的作用
1.透明:通過適配器,客戶端可以調用同一個接口,因而對客戶端來說是透明的 這樣做更簡單、更直接、更緊湊 2.重用:復用了現存的類,解決了現存類和復用環境要求不一致的問題 3.低耦合:將目標類和適配者類解耦,通過引入一個適配器類重用現有的適配者類, 而無需修改原有代碼(遵循開閉原則) 開閉原則:對修改關閉,對擴展開放
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/70296.html
時間:2017年08月30日星期三說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學源碼:https://github.com/zccodere/s...學習源碼:https://github.com/zccodere/s... 第一章:責任鏈模式簡介 1-1 課程簡介 課程大綱 什么是責任鏈模式 如何實現責任鏈模式 責任鏈模式如何解耦 責任鏈模式的應用 案例:...
時間:2017年08月27日星期日說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學源碼:https://github.com/zccodere/s...學習源碼:https://github.com/zccodere/s... 第一章:單例模式簡介 1-1 簡介 單例模式 概念及應用場合 餓漢模式 懶漢模式 餓漢模式與懶漢模式的區別 什么是設計模式 是一套被反...
摘要:時間年月日星期六說明本文部分內容均來自慕課網。案例介紹飲料機配置模版把水煮沸泡飲料把飲料倒進杯子加調味料第二章模版模式實現基本框架代碼編寫編寫類模版模式抽象基類,為所有子類提供一個算法框架。 時間:2017年09月02日星期六說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學源碼:https://github.com/zccodere/s...學習源...
時間:2017年08月31日星期四說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學源碼:https://github.com/zccodere/s...學習源碼:https://github.com/zccodere/s... 第一章:策略模式簡介 1-1 簡介 課程大綱 什么是策略模式 策略模式如何實現 策略模式總結篇 實例案例分享 日常生活中的策略 Wor...
摘要:時間年月日星期日說明本文部分內容均來自慕課網。這對所有形態的工廠模式都是重要的這個系統的產品有至少一個的產品族同屬于一個產品族的產品是設計成在一起使用的。 時間:2017年08月27日星期日說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學源碼:https://github.com/zccodere/s...學習源碼:https://github.c...
閱讀 1201·2021-11-23 09:51
閱讀 1980·2021-10-08 10:05
閱讀 2339·2019-08-30 15:56
閱讀 1900·2019-08-30 15:55
閱讀 2640·2019-08-30 15:55
閱讀 2487·2019-08-30 13:53
閱讀 3498·2019-08-30 12:52
閱讀 1250·2019-08-29 10:57