中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

圖解設計模式之Adapter模式

發布時間:2020-03-20 17:39:15 來源:網絡 閱讀:813 作者:Adam的blog 欄目:開發技術

什么是Adapter模式

 Adapter模式即適配器模式,對于適配器的理解參考現實生活中把交流電轉換成直流電的電源適配器,用于填補現有的程序所需的程序之間差異的設計模式就是Adapter模式,有以下兩種實現方式:
 1. 類適配器模式(使用繼承的適配器)
 2. 對象適配器模式(使用委托的適配器)
所謂繼承和委托的區別在哪呢?委托是指將某個方法中的實際處理交給其他實例的方法,繼承則是自己進行處理,下面分別看下兩種實現方式:

代碼清單

這里有一個需要被適配的Banner類

/**
 * 被適配角色:交流100福特電源
 * @author guozhenZhao
 * @date 2018年6月21日
 */
public class Banner {
    private String string;

    public Banner(String string) {
        super();
        this.string = string;
    }

    public void showWithParen() {
        System.out.println("("+ string +")");
    }

    public void showWithAster() {
        System.out.println("*"+ string +"*");
    }
}

還有一個接口和一個抽象類

public interface Print {
    public abstract void printWeak();
    public abstract void printStrong();
}
public abstract class PrintTwo {
    public abstract void printWeak();
    public abstract void printStrong();
}

下面看一下兩種方式的區別:
1. 使用繼承的適配器

/**
 * 使用繼承的適配器
 * @author guozhenZhao
 * @date 2018年6月20日
 */
public class PrintBanner extends Banner implements Print {

    public PrintBanner(String string) {
        super(string);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void printWeak() {
        // TODO Auto-generated method stub
        showWithParen();
    }

    @Override
    public void printStrong() {
        // TODO Auto-generated method stub
        showWithAster();
    }

}

2.使用委托的適配器

/**
 * 使用委托的適配器
 * @author guozhenZhao
 * @date 2018年6月21日
 */
public class PrintBannerTwo extends PrintTwo {
    private Banner banner;

    public PrintBannerTwo(String string) {
        super();
        this.banner = new Banner(string);
    }

    @Override
    public void printWeak() {
        // TODO Auto-generated method stub
        banner.showWithParen();
    }

    @Override
    public void printStrong() {
        // TODO Auto-generated method stub
        banner.showWithAster();
    }

}

當PrintBanner類的printWeak方法被調用時,并不是PrintBanner類自己進行處理,而是交給了其他類的實例的某些方法

什么時候使用適配器模式呢

有一些現有的類可以被我們重復使用時,我們可以使用適配器將這些類作為組件重復利用,另外適配器模式用于連接接口(API)不同的類

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临桂县| 西安市| 屏边| 阳江市| 沽源县| 松溪县| 周宁县| 金坛市| 北京市| 阳春市| 平顺县| 渑池县| 河间市| 江北区| 奉化市| 驻马店市| 天全县| 松滋市| 安龙县| 鸡东县| 胶州市| 江川县| 嘉黎县| 育儿| 昂仁县| 时尚| 宝鸡市| 灵台县| 永登县| 建水县| 新田县| 新建县| 石河子市| 泊头市| 勐海县| 犍为县| 桐柏县| 庆城县| 沂源县| 绥江县| 双辽市|