小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

基于JAVA的設(shè)計(jì)模式之適配器模式

 印度阿三17 2019-06-24
  • 適配器模式概念

    適配器模式把一個(gè)類的接口變換成客戶端所期待的另一個(gè)接口,從而使原本因接口不匹配而無法在一起工作的兩個(gè)類能夠在一起工作。比如我們突然就想看電影了,但是這個(gè)電影是AVI格式的,目前我們開發(fā)的Player播放器只能播放Mp4格式的,那么我們就得對這款落后的Player進(jìn)行版本升級,通過Adapter適配器就可以實(shí)現(xiàn)既可以播放AVI格式的、也可以播放Mp4,這個(gè)適配器既可以播放原有的Mp4,也可以提供AVI接口。

    Adapter:適配器

    Adaptee:被適配的對象,就是Player

    Target:客戶端理想的接口,就是可以播Mp4,也可以播放AVI接口

  • 類適配器類圖

  

  • 類適配器代碼
public interface TargetPlayer {
    public void playMp4();
    public void playAVI();
}

public class AdpateePlayer {
    public void playMp4(){
        System.out.println("can play mp4");
    }
}

public class Adapter extends AdpateePlayer implements TargetPlayer {
    public void playAVI() {
        System.out.println("can play avi");
    }
}

public class AdapterMain {
    public static void main(String[] args) {
        Adapter adapter=new Adapter();
        adapter.playAVI();
        adapter.playMp4();
    }
}
  • 對象適配器類圖

  • 對象適配器代碼
public interface TargetPlayer {
    public void playMp4();
    public void playAVI();
}

public interface AdapteePlayer {
    public void playMp4();
}

public class AdapteePlayerImpl implements AdapteePlayer {
    public void playMp4() {
        System.out.println("can play mp4");
    }
}

public class Adapter implements TargetPlayer{
    private AdapteePlayer adapteePlayer;

    public void setAdapteePlayer(AdapteePlayer adapteePlayer) {
        this.adapteePlayer = adapteePlayer;
    }

    public void playMp4() {
        adapteePlayer.playMp4();
    }

    public void playAVI() {
        System.out.println("can play avi");
    }
}

public class AdapterMain {
    public static void main(String[] args) {
        Adapter adapter=new Adapter();
        AdapteePlayer adapteePlayer=new AdapteePlayerImpl();
        adapter.setAdapteePlayer(adapteePlayer);
        adapter.playAVI();
        adapter.playMp4();
    }
}
  • 二者比較

    小編為了突出對象適配器的好,將待適配器對象實(shí)現(xiàn)既寫了接口又寫了實(shí)現(xiàn),很明顯對象適配器很靈活,可以動(dòng)態(tài)的傳入不同的待適配的對象,而類適配器是靜態(tài)的類繼承,后期不可以修改,很死板。

  • 應(yīng)用場景 

    適配器作用就是講一個(gè)接口適配到另一個(gè)接口,在Java 的I/O類庫中有很多這樣的需求,如將字符串?dāng)?shù)據(jù)轉(zhuǎn)變成字節(jié)數(shù)據(jù)保存到文件中,將字節(jié)數(shù)據(jù)轉(zhuǎn)變成流數(shù)據(jù)等。

    以InputStreamReader和OutputStreamWriter類為例。

    InputStreamReader和OutputStreamWriter類分別繼承了Reader和writer接口,但是要?jiǎng)?chuàng)建他們的對象必須在構(gòu)造函數(shù)中傳入一個(gè)InputStream和OutputStream的實(shí)例,InputStreamReader和OutputStreamWriter類的作用也就是將InputStream和OutputStream適配到Reader和Writer。

    適配器是InputStreamReader,源角色是InputStream代表的實(shí)例對象,目標(biāo)接口就是Reader類。

    InputStreamReader 將字節(jié)流轉(zhuǎn)換為字符流。是字節(jié)流通向字符流的橋梁。如果不指定字符集編碼,該解碼過程將使用平臺默認(rèn)的字符編碼,如:GBK。

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

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多