成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

實例講解JAVA 適配器模式

瀏覽:6日期:2022-08-30 13:13:13

在講述這個模式之前,我們先看一個案例:中國球員去NBA打籃球

中國球員去NBA打籃球,可是他不懂英語,所以聽不懂教練安排的戰術,所以現在有三種解決方式

1、球員學會英語。2、教練學會中文。3、請個翻譯。

1和2是長久之計,但不能解決迫在眉睫的問題。請個翻譯是短暫的更好的選擇。

放在軟件設計層面上,這就叫做適配器模式。https://www.jb51.net/article/189484.htm

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

在軟件開發中,也就是系統的數據和行為都正確,但接口不符時,我們應該考慮用適配器,目的是使控制范圍之外的一個原有對象與某個接口匹配,適配器模式主要應用于希望復用一些現存的類,但是接口又與復用環境要求不一致的情況。

在 GoF 的設汁模式中,對適配器模式講了兩種類型,類適配器模式和對象適配器模式,由于類適配器模式通過多重繼承對一個接口與另一個接口進行匹配,而JAVA語言不支持多重繼承,也就是一個類只有一個父類,所以我們這里主要講的是對象適配器。

Target(這是客戶所期待的接口。目標可以是具體的或抽象的類,也可以是接口)代碼如下:

public class Target { public void request() { System.out.println('普通請求'); }}

Adaptee(需要適配的類)代碼如下:

public class Adaptee { public void specialRequest(){ System.out.println('特殊請求'); }}

Adapter(通過在內部包裝一個Adaptee對象,把原接口轉換成目標接口)代碼如下:

public class Adapter extends Target{ private Adaptee adaptee = new Adaptee();//建立一個私有的Adaptee對象 @Override public void request() { //這樣就可以把表面上調用request()方法變成實際調用的specialRequest() adaptee.specialRequest(); }}

測試方法

public class Test { public static void main(String[] args) { //對main方法來說,調用的就是Target的request() Target target = new Target(); target.request(); }}

看起來是不是很簡單,是不是跟一句俗語很像“掛羊頭賣狗肉”。

何時使用適配器模式?

在想使用一個已經存在的類,但如果它的接口,也就是它的方法和你的要求不相同時,就應該考慮用適配器模式。兩個類所做的事情相同或相似,但是具有不同的接口時要使用它。而且由于類都共亨同一個接口,代碼可以統一調用同一接口就行了,這樣應該可以更簡單、更直接、更緊湊。

其實用適配器模式也是無奈之舉,很有點‘亡羊補牢’的感覺,沒辦法呀,是軟件就有維護的一天,維護就有可能會因不同的開發人員、不同的產品、不同的廠家而造成功能類似而接口不同的情況,此時就是適配器模式大展拳腳的時候了。

現在把教練給球員們分配任務的例子用適配器模式實現

球員類

public abstract class Player { protected String name; public Player(String name) { this.name = name; } //進攻和防守方法 public abstract void attack(); public abstract void defense();}

后衛、中鋒、前鋒類

//前鋒public class Forwards extends Player { public Forwards(String name) { super(name); } @Override public void attack() { System.out.println('前鋒:'+name+'進攻'); } @Override public void defense() { // TODO Auto-generated method stub System.out.println('前鋒:'+name+'防守'); }}//中鋒public class Center extends Player { public Center(String name) { super(name); } @Override public void attack() { System.out.println('中鋒:'+name+'進攻'); } @Override public void defense() { // TODO Auto-generated method stub System.out.println('中鋒:'+name+'防守'); }}//后衛public class Guards extends Player { public Guards(String name) { super(name); } @Override public void attack() { System.out.println('后衛:'+name+'進攻'); } @Override public void defense() { // TODO Auto-generated method stub System.out.println('后衛:'+name+'防守'); }}

測試方法

public class Test { public static void main(String[] args) { Player peter = new Forwards('peter'); peter.attack(); Player mike = new Guards('mike'); mike.attack(); Player zhangsan = new Center('張三'); zhangsan.attack(); zhangsan.defense(); }}

輸出結果:

前鋒:peter進攻后衛:mike進攻中鋒:張三進攻中鋒:張三防守

球員“張三”不會說英語,需要翻譯,用適配器模式完善代碼

//外籍中鋒public class ForeignCenter { private String name; //外籍中鋒只懂得中文“進攻” public void jingong() { System.out.println('中鋒:'+name+'進攻'); } //外籍中鋒只懂得中文“防守” public void fangshou() { System.out.println('中鋒:'+name+'防守'); } //省略getter、setter方法}

//翻譯者public class Translator extends Player { //聲明并實例化一個內部“外籍中鋒”對象,表面翻譯者與外籍球員有關聯 private ForeignCenter wjzf = new ForeignCenter(); public Translator(String name) { super(name); wjzf.setName(name); } @Override public void attack() { //翻譯者將attack翻譯為jingong 告訴外籍中鋒 wjzf.jingong(); } @Override public void defense() { //翻譯者將defense翻譯為fangshou 告訴外籍中鋒 wjzf.fangshou(); }}

main方法修改代碼如下:

//翻譯者public class Translator extends Player { //聲明并實例化一個內部“外籍中鋒”對象,表面翻譯者與外籍球員有關聯 private ForeignCenter wjzf = new ForeignCenter(); public Translator(String name) { super(name); wjzf.setName(name); } @Override public void attack() { //翻譯者將attack翻譯為jingong 告訴外籍中鋒 wjzf.jingong(); } @Override public void defense() { //翻譯者將defense翻譯為fangshou 告訴外籍中鋒 wjzf.fangshou(); }}

現在就算是張三不懂英文,教練不懂中文,但因為有了翻譯者,團隊溝通合作成為了可能。

如果能事先預防接口不同的問題,不匹配問題就不會發生:在有小的接口不統一問題發生時,及時重構,問題不至于擴大:只有碰到無法改變原有設計和代碼的情況時,才考慮適配。

事后控制不如事中控制,事中控制不如事前控制。

以上就是實例講解JAVA 適配器模式的詳細內容,更多關于JAVA 適配器模式的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
国产精品九色蝌蚪自拍| 欧美电视剧在线看免费| 欧洲色大大久久| 自拍偷自拍亚洲精品播放| 国产高清不卡一区| 日本大香伊一区二区三区| 亚洲乱码中文字幕| 99久久99精品久久久久久| 欧美三级中文字幕在线观看| 国产精品剧情在线亚洲| 成人av电影在线播放| 欧美日韩一区视频| 青青草国产成人av片免费| 日韩视频久久| 中文字幕日韩精品一区| 91女神在线视频| 欧美一级夜夜爽| 精品一区二区三区免费播放| 国产九九精品| 亚洲欧美一区二区久久| 欧美日韩国产精品一卡| 2023国产一二三区日本精品2022| 国产一区视频在线看| 在线亚洲一区二区| 中文字幕欧美激情| 91在线观看地址| 久久久无码精品亚洲日韩按摩| 国产乱码精品一区二区三区忘忧草| 色狠狠综合天天综合综合| 亚洲女与黑人做爰| 国产综合欧美| 国产亚洲成aⅴ人片在线观看| 岛国一区二区三区| 3d动漫精品啪啪| 麻豆精品久久久| 久热综合在线亚洲精品| 亚洲国产你懂的| aa亚洲婷婷| 中文字幕视频一区二区三区久| 色综合久久综合网欧美综合网| 精品久久久久久久久久久久久久久| 福利91精品一区二区三区| 国产亚洲成人一区| 亚洲午夜一二三区视频| 亚洲综合好骚| 亚洲国产精品精华液网站| 制服诱惑一区二区| 亚洲精品免费在线观看| 亚洲精品一级| 亚洲久草在线视频| 国产精品一区亚洲| 日韩中文字幕1| 欧美日韩精品欧美日韩精品一| 国产黄色精品网站| 亚洲精品一区二区三区99| 欧美精品国产一区| 一区二区视频在线| 色婷婷综合久久久久中文一区二区| 久久精品国产秦先生| 欧美成人伊人久久综合网| 午夜视频久久久| 亚洲午夜视频在线| 欧美三级电影网站| youjizz久久| 中文字幕亚洲在| 香蕉av777xxx色综合一区| 久久精品二区亚洲w码| 日韩三级伦理片妻子的秘密按摩| 欧美日韩国产免费观看| 亚洲欧洲综合另类| 91国偷自产一区二区三区成为亚洲经典 | 精品国精品国产尤物美女| 丁香六月综合激情| 亚洲精品在线一区二区| 国产精品69久久久久水密桃| 久久精品人人做人人爽97| 久久97超碰国产精品超碰| 91精品一区二区三区久久久久久| 欧美aⅴ一区二区三区视频| 欧美性猛片xxxx免费看久爱| 玖玖九九国产精品| 在线播放视频一区| 成人综合日日夜夜| 久久男人中文字幕资源站| 欧美色123| 亚洲精品自拍动漫在线| 免费一区视频| 老司机免费视频一区二区三区| 欧美视频完全免费看| 国产一区欧美二区| 欧美mv日韩mv国产网站| 99re成人在线| 国产精品九色蝌蚪自拍| 99国产精品久久久久久久成人热 | 亚洲影视在线观看| 亚洲精品欧美| 天天亚洲美女在线视频| 色94色欧美sute亚洲线路一ni | 国产日韩欧美精品在线| 亚洲国产欧美不卡在线观看| 秋霞午夜av一区二区三区| 欧美日本精品一区二区三区| 99视频精品在线| 国产精品久久久久久久久晋中| 国产欧美午夜| 蜜桃av一区二区在线观看| 欧美日韩的一区二区| 成人永久免费视频| 中文字幕精品三区| 在线欧美日韩精品| 国产aⅴ精品一区二区三区色成熟| 久久综合中文字幕| 亚洲精品乱码| 蜜桃久久av一区| 欧美电视剧免费全集观看| 伊伊综合在线| 美国一区二区三区在线播放| 日韩视频在线你懂得| 欧美连裤袜在线视频| 国产精品欧美久久久久无广告| 91久久奴性调教| 高清成人在线观看| 中文字幕一区二区视频| 一本到高清视频免费精品| 国产91精品在线观看| 中文字幕在线不卡| 欧美在线不卡一区| 91免费国产在线| 亚洲一二三级电影| 91精品欧美一区二区三区综合在| 欧美1区3d| 亚洲第一电影网| 日韩欧美一区二区久久婷婷| 一区在线免费| 免费成人av资源网| 日韩三级视频中文字幕| 鲁大师成人一区二区三区| 国产成人精品午夜视频免费| 国产精品高潮久久久久无| 久久亚洲视频| 色综合天天狠狠| 亚洲6080在线| 精品国产亚洲在线| 久久精品欧美| 国产乱码精品一区二区三 | 自拍偷拍欧美激情| 欧美午夜一区二区三区| 亚洲日本黄色| 国产一区二区视频在线| 国产精品美女久久久久久久久| 欧美午夜免费电影| 激情视频一区二区| 国产麻豆精品在线观看| 亚洲精品视频观看| 精品久久久久久久一区二区蜜臀| 亚洲一区尤物| 99视频在线精品| 国产精选一区二区三区| 亚洲激情五月婷婷| 精品成人一区二区三区| 久久久久久一区| 国产一区视频在线观看免费| 国产一区美女在线| 亚洲视频1区2区| 欧美精品成人一区二区三区四区| 欧美午夜精品理论片a级大开眼界 欧美午夜精品久久久久免费视 | 亚洲一级一区| 国内精品国产成人| 国产精品久久国产精麻豆99网站| 久久精品30| 国语自产精品视频在线看抢先版结局| 精品一区二区免费| 亚洲在线观看免费视频| 日本一区二区成人在线| 欧美精品xxxxbbbb| 亚洲一区二区伦理| av亚洲产国偷v产偷v自拍| 蜜桃视频一区二区三区| 国产精品盗摄一区二区三区| 日韩欧美一区二区视频| 久久激情久久| 亚洲国产精品www| 91美女精品福利| 国产精品夜夜爽| 天天亚洲美女在线视频| 日本一区二区免费在线观看视频 | 中文久久精品| 欧美日韩精品免费观看视一区二区| 蜜桃传媒麻豆第一区在线观看| 中文幕一区二区三区久久蜜桃| 91精品福利在线一区二区三区 | 久久精品亚洲| 在线欧美三区| 欧美精品一卡| 暴力调教一区二区三区| 国产酒店精品激情| 蜜桃久久久久久| 亚洲妇女屁股眼交7| 亚洲成人在线免费| 亚洲免费电影在线|