日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

java设计模式:适配器设计模式

發布時間:2025/3/20 asp.net 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java设计模式:适配器设计模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

首先,先來先講講適配器。適配就是由“源”到“目標”的適配,而當中鏈接兩者的關系就是適配器。它負責把“源”過度到“目標”。舉個簡單的例子,比如有一個“源”是一個對象人,他擁有2種技能分別是說日語和說英語,而某個崗位(目標)需要你同時回說日語、英語、和法語,好了,現在我們的任務就是要將人這個“源”適配的這個崗位中,如何適配呢?顯而易見地我們需要為人添加一個說法語的方法,這樣才能滿足目標的需要。

?

接著討論如何加說法語這個方法,也許你會說,為什么不直接在“源”中直接添加方法,我的理解是,適配是為了實現某種目的而為一個源類暫時性的加上某種方法,所以不能破壞原類的結構。同時不這么做也符合Java的高內聚,低耦合的原理。既然不能直接加,接著我們就來說該怎么來實現為人這個“源”添加一個方法,而又不破壞“源”的本身結構。

?

適配器模式有2種,第一種是“面向類的適配器模式”,第二種是“面向對象的適配器模式”。

?

先說“面向類的適配器模式”。顧名思義,這類適配器模式就是主要用于,單一的為某個類而實現適配的這樣一種模式,為什么說只為某個類去實現,一會提到,我們先展示這種類適配模式的代碼實現。

?

源的代碼如下:

public class Person {private String name;private String sex;private int age;public void speakJapanese(){System.out.println("I can speak Japanese!");}public void speakEnglish(){System.out.println("I can speak English!");}...//以下省略成員變量的get和set方法 }

?

?

?目標接口的代碼如下:

public interface Job {public abstract void speakJapanese(); public abstract void speakEnglish(); public abstract void speakFrench();} ?適配器的代碼如下: public class Adapter extends Person implements Job{public void speakFrench() {}}

好了,代碼看完然后要做一些說明了,之前遺留的一個問題,為什么稱其為類適配模式呢?很顯然的,Adapter類繼承了Person類,而在Java這種單繼承的語言中也就意味著,他不可能再去繼承其他的類了,這樣也就是這個適配器只為Person這一個類服務。所以稱其為類適配模式。

?

說完類的適配模式,我們要開始說第2種對象的適配器模式了。對象適配器模式是把“源”作為一個對象聚合到適配器類中。同樣的話不多說,貼上代碼:

?

源的代碼以及目標代碼同上,再次不再贅述。

僅貼出適配器代碼:

public class Adapter implements Job {Person person;public Adapter(Person person) {this.person = person;}public void speakEnglish() {person.speakEnglish();}public void speakJapanese() {person.speakJapanese();}//new addpublic void speakFrench() {}}

?

對象的適配器模式,把“源”作為一個構造參數傳入適配器,然后執行接口所要求的方法。這種適配模式可以為多個源進行適配。彌補了類適配模式的不足。

?

現在來對2種適配模式做個分析:

1.類的適配模式用于單一源的適配,由于它的源的單一話,代碼實現不用寫選擇邏輯,很清晰;而對象的適配模式則可用于多源的適配,彌補了類適配模式的不足,使得原本用類適配模式需要寫很多適配器的情況不復存在,弱點是,由于源的數目可以較多,所以具體的實現條件選擇分支比較多,不太清晰。

2.適配器模式主要用于幾種情況:(1)系統需要使用現有的類,但現有的類不完全符合需要。(2)講彼此沒有太大關聯的類引進來一起完成某項工作(指對象適配)。

?

最后,再來順帶談談默認適配器模式:這種模式的核心歸結如下:當你想實現一個接口但又不想實現所有接口方法,只想去實現一部分方法時,就用中默認的適配器模式,他的方法是在接口和具體實現類中添加一個抽象類,而用抽象類去空實現目標接口的所有方法。而具體的實現類只需要覆蓋其需要完成的方法即可。代碼如下:

接口類:

? public interface Job {public abstract void speakJapanese();public abstract void speakEnglish();public abstract void speakFrench();public abstract void speakChinese();}

?抽象類:?

? public abstract class JobDefault implements Job{public void speakChinese() {}public void speakEnglish() {}public void speakFrench() {}public void speakJapanese() {}}

實現類:

? public class JobImpl extends JobDefault{public void speakChinese(){System.out.println("I can speak Chinese!");}}

轉載于:https://my.oschina.net/stonezing/blog/124218

總結

以上是生活随笔為你收集整理的java设计模式:适配器设计模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。