<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
介面卡模式,即將某個類的介面轉換成使用者端期望的另一個介面的表示,主要目的是實現相容性,讓原本因為介面不匹配,沒辦法一起工作的兩個類,可以協同工作。
手機充電,通過手機充電器將220V電壓適配為5V
定義220V交流電(被適配者的角色)
/** * 220V交流電(被適配者的角色) * @author:liyajie * @createTime:2022/2/17 21:41 * @version:1.0 */ public class Ac { public int outputAc(){ int srcV = 220; System.out.println(srcV + "V交流電"); return srcV; } }
定義5v直流電(目標物件的角色)
/** * 5v直流電(目標物件的角色) * @author:liyajie * @createTime:2022/2/17 21:44 * @version:1.0 */ public interface Dc { int outputDc(); }
定義介面卡
/** * 手機充電介面卡 * @author:liyajie * @createTime:2022/2/17 21:45 * @version:1.0 */ public class PhoneAdapter extends Ac implements Dc{ @Override public int outputDc() { // 獲取220V交流電 int srcV = outputAc(); // 模擬介面卡過程,轉換為5v直流電 int targetV = srcV / 44; System.out.println("電壓已經適配為" + targetV + "V" ); return targetV; } }
定義手機類
/** * 手機類 * @author:liyajie * @createTime:2022/2/17 21:48 * @version:1.0 */ public class Phone { public void charge(Dc dc){ if(dc.outputDc() == 5){ System.out.println("電壓正常,可以安全充電"); }else { System.out.println("電壓異常,危險!"); } } }
定義測試類
/** * 測試類 * @author:liyajie * @createTime:2022/2/18 10:56 * @version:1.0 */ public class Test { public static void main(String[] args) { new Phone().charge(new PhoneAdapter()); } }
檢視測試結果
該方案只需要改造手機介面卡類即可,如下:
/** * 手機充電介面卡 * @author:liyajie * @createTime:2022/2/17 21:45 * @version:1.0 */ public class PhoneAdapter implements Dc { private Ac ac; public PhoneAdapter(Ac ac){ this.ac = ac; } @Override public int outputDc() { // 獲取220V交流電 int srcV = ac.outputAc(); // 模擬介面卡過程,轉換為5v直流電 int targetV = srcV / 44; System.out.println("電壓已經適配為" + targetV + "V" ); return targetV; } }
改造測試類
/** * 測試類 * @author:liyajie * @createTime:2022/2/18 11:12 * @version:1.0 */ public class Test { public static void main(String[] args) { new Phone().charge(new PhoneAdapter(new Ac())); } }
檢視測試結果
需要改造的如下: 定義一個預設的介面卡,作用是實現Dc的多個方法,使其他的自定義介面卡用來繼承,擴充套件
/** * 預設介面卡 * @author:liyajie * @createTime:2022/2/17 21:45 * @version:1.0 */ public class DefaultAdapter implements Dc { @Override public int outputDc() { return 0; } }
定義手機介面卡
/** * 手機充電介面卡 * @author:liyajie * @createTime:2022/2/17 21:45 * @version:1.0 */ public class PhoneAdapter extends DefaultAdapter { private Ac ac; public PhoneAdapter(Ac ac){ this.ac = ac; } @Override public int outputDc() { // 獲取220V交流電 int srcV = ac.outputAc(); // 模擬介面卡過程,轉換為5v直流電 int targetV = srcV / 44; System.out.println("電壓已經適配為" + targetV + "V" ); return targetV; } }
定義手機類
/** * 手機類 * @author:liyajie * @createTime:2022/2/17 21:48 * @version:1.0 */ public class Phone { public void charge(int v){ if(v == 5){ System.out.println("電壓正常,可以安全充電"); }else { System.out.println("電壓異常,危險!"); } } }
定義測試類
/** * 測試類 * @author:liyajie * @createTime:2022/2/18 11:57 * @version:1.0 */ public class Test { public static void main(String[] args) { new Phone().charge(new PhoneAdapter(new Ac()).outputDc()); } }
檢視測試結果
改造適配類,將繼承被適配者,修改為持有被適配者,遵循合成複用原則,使用關聯關係代替繼承關係,進一步解耦,提高擴充套件性
介面介面卡模式,又叫預設介面卡模式,通過設計一箇中間抽象類,去實現介面,為介面中的每個方法都提供一個預設實現,然後再定義一個具體的介面卡繼承預設的介面卡,只需要重寫自己需要重寫的方法即可
介面卡模式的三種實現方式,類介面卡模式有一定的侷限性,其中最常用的是物件介面卡模式,所以比較推薦的是物件介面卡模式
到此這篇關於Java設計模式之介面卡模式的範例詳解的文章就介紹到這了,更多相關Java介面卡模式內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45