<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
模式: 介面卡模式
案例: 虹貓利用火晶石催發火舞旋風劍氣
介面卡模式(Adapter)的定義如下: 將一個類的介面轉換成客戶希望的另外一個介面,使得原本由於介面不相容而不能一起工作的那些類能一起工作。介面卡模式分為類結構型模式和物件結構型模式兩種,前者類之間的耦合度比後者高,且要求程式設計師瞭解現有元件庫中的相關元件的內部結構,所以應用相對較少些。
1、使用者端通過介面卡可以透明地呼叫目標介面。
2、複用了現存的類,程式設計師不需要修改原有程式碼而重用現有的適配者類。
3、將目標類和適配者類解耦,解決了目標類和適配者類介面不一致的問題。
4、在很多業務場景中符合開閉原則。
1、介面卡編寫過程需要結合業務場景全面考慮,可能會增加系統的複雜性。
2、增加程式碼閱讀難度,降低程式碼可讀性,過多使用介面卡會使系統程式碼變得凌亂。
類介面卡模式: 可採用多重繼承方式實現,如 C++ 可定義一個介面卡類來同時繼承當前系統的業務介面和現有元件庫中已經存在的元件介面;Java 不支援多繼承,但可以定義一個介面卡類來實現當前系統的業務介面,同時又繼承現有元件庫中已經存在的元件。
物件介面卡模式: 可釆用將現有元件庫中已經實現的元件引入介面卡類中,該類同時實現當前系統的業務介面。現在來介紹它們的基本結構。
案例: 虹貓利用火晶石催發火舞旋風劍氣
目標(Target)介面:長虹劍氣
適配者(Adaptee)類:火舞旋風劍氣
介面卡(Adapter)類:火晶石
虹貓目前只能催髮長虹劍氣,但是他想催發火舞旋風劍氣
只能藉助火晶石的力量來將長虹劍氣轉化為火舞旋風劍氣
注意: 我這裡是讓火舞旋風劍氣適配長虹劍氣
宣告一個長虹劍氣的介面,包含一個催動長虹劍氣的抽象方法
public interface Chang { void chang(); }
火舞旋風劍氣類,宣告一個催發火舞旋風劍氣的方法。
public class Huo { public void huo() { System.out.println("火舞旋風劍氣"); } }
火晶石類,繼承火舞旋風劍氣類(目的:繼承了就可以使用類裡面的方法),實現了長虹劍氣介面(目的:實現催髮長虹劍氣的方法)。在催髮長虹劍氣的方法中呼叫了催發火舞旋風劍氣的方法。
public class JingShi extends Huo implements Chang { @Override public void chang() { huo(); } }
public class Demo { public static void main(String[] args) { Chang haha = new JingShi(); haha.chang(); } }
宣告一個長虹劍氣的介面,包含一個催動長虹劍氣的抽象方法
public interface Chang { void chang(); }
火舞旋風劍氣類,宣告一個催發火舞旋風劍氣的方法。
public class Huo { public void huo() { System.out.println("火舞旋風劍氣"); } }
火晶石類,實現了長虹劍氣介面,宣告了一個火舞旋風劍氣屬性,並實現了催髮長虹劍氣的方法。將催動火舞旋風劍氣的方法放在了催動長虹劍氣的方法中。
public class JingShi implements Chang { private Huo huo; JingShi() { } JingShi(Huo huo) { this.huo = huo; } @Override public void chang() { huo.huo(); } }
new一個火舞旋風劍氣物件,new一個火晶石物件,並將火舞旋風劍氣物件傳入火晶石物件中。
public class Demo { public static void main(String[] args) { Huo huo = new Huo(); Chang haha = new JingShi(huo); haha.chang(); } }
類介面卡的重點在於類,是通過構造一個繼承Adaptee類來實現介面卡的功能;
物件介面卡的重點在於物件,是通過在直接包含Adaptee類來實現的,當需要呼叫特殊功能的時候直接使用Adapter中包含的那個Adaptee物件來呼叫特殊功能的方法即可
到此這篇關於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