日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

java設計模式--適配器模式

 印度阿三17 2019-07-07

適配器模式:將一個本不能兼容客戶端的類的接口通過適配器轉為可以兼容的接口。

  這里有一個“中國學生接口”,定義了“說中國話”和“聽中國話兩個方法”

//中國學生接口
public interface ChineseStudent {
    void speakChinese();

    void listenChinese();
}

//中國學生類
public class ChineseStudent1 implements ChineseStudent {

    public String name;

    public ChineseStudent1(String name){
        this.name = name;
    }

    @Override
    public void speakChinese() {
        System.out.println("學生:"   name   "說話");
    }

    @Override
    public void listenChinese() {
        System.out.println("學生:"   name   "聆聽");
    }
}

//測試方法
public class Test {
    public static void main(String[] args) {
        ChineseStudent chineseStudent = new ChineseStudent1("zhangsan");
        chineseStudent.speakChinese();
        chineseStudent.listenChinese();
    }
}

測試結果:

學生:zhangsan說話
學生:zhangsan聆聽

?

  此時如果來了一個外國學生呢,這個外國學生不會說中文并且也聽不懂中文,那么他如何去和其他中國學生交流呢,此時我們就需要一個“翻譯”——適配器

//外國學生類
public class ForeignStudent {

    private String name;

    public ForeignStudent(String name){
        this.name = name;
    }

    public void speakEnglish(){
        System.out.println("學生:"   name   "說話");
    }

    public void listenEnglish() {
        System.out.println("學生:"   name   "聆聽");
    }

}

?

//適配器類
public class Translator implements ChineseStudent{

    //實例外國學生類
    ForeignStudent foreignStudent = new ForeignStudent("Joe");
@Override public void speakChinese() { foreignStudent.speakEnglish(); } @Override public void listenChinese() { foreignStudent.listenEnglish(); } }

?

//測試方法
public class Test {
    public static void main(String[] args) {
        ChineseStudent chineseStudent = new ChineseStudent1("zhangsan");
        chineseStudent.speakChinese();
        chineseStudent.listenChinese();

        ChineseStudent foreignStudent = new Translator();
        foreignStudent.speakChinese();
        foreignStudent.listenChinese();
    }
}

測試結果:

學生:zhangsan說話
學生:zhangsan聆聽
學生:Joe說話
學生:Joe聆聽

這樣的話即使外國學生類不能直接實現(xiàn)“說中文”和“聽中文”方法,但是通過適配器就完成了這一操作,便兼容了ChineseStudent接口。

總結:雖然適配器模式可以去兼容接口,但是這種操作通常是維護時不希望去改變兼容方與被兼容方的類時才被考慮的方法,如果在開發(fā)時能考慮到接口不兼容的問題,及時解決,通常問題就不會擴大到去兼容接口的程度。

來源:https://www./content-1-306301.html

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多