91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

【設計模式與Android】責任鏈模式——曹瞞兵敗走華容

發布時間:2020-06-16 17:53:15 來源:網絡 閱讀:908 作者:東風玖哥 欄目:移動開發

什么是責任鏈模式

 

所謂責任鏈模式,就是使多個對象都有機會處理請求,并講這些對象連成一條鏈,沿著這條鏈傳遞請求直到有對象處理請求為止的設計模式。責任鏈模式可以避免請求的發送者和接收者之間的耦合關系。

 

責任鏈模式的實現方式

 

熟悉我的人都知道我對華容道游戲情有獨鐘,2014年用AndEngine實現了一個華容道交了畢業設計,2015年用OGEngine參賽中了一部手機……我每年都要用不同的新技術實現一遍華容道。華容道的背景故事請見《三國演義》第五十回。

 

這次我拿華容道給大家講解一遍責任鏈模式,首先定義一個抽象的將軍類:

public abstract class General {

    protected General nextGeneral;

    /**
     * 姓名
     */
    public abstract String getName();

    /**
     * 武力
     */
    public abstract int getForce();

    /**
     * 攔截曹操
     * @param force 曹操手下將軍能拿出來的最高武力
     */
    public final void tryCaoCao(int force){
        if (force <= getForce()){
            catchCaoCao();
        }else{
            if (nextGeneral != null){
                nextGeneral.tryCaoCao(force);
            }
        }
    }

    /**
     * 有能力抓獲曹操
     */
    public void catchCaoCao(){
        Log.e("曹操無路可逃","曹操兵敗走華容,正與" + getName() + "狹路逢。只為當初恩義重,放開金鎖走蛟龍。");
    }

}

 

趙云:

public class ZhaoYun extends General {
    @Override
    public String getName() {
        return "趙云";
    }

    @Override
    public int getForce() {
        return 95;
    }
}

 

張飛:

public class ZhangFei extends General {
    @Override
    public String getName() {
        return "張飛";
    }

    @Override
    public int getForce() {
        return 97;
    }
}

 

關羽:

public class GuanYu extends General {
    @Override
    public String getName() {
        return "關羽";
    }

    @Override
    public int getForce() {
        return 100;
    }
}

 

曹操走華容道:

ZhaoYun zhaoYun = new ZhaoYun();
ZhangFei zhangFei = new ZhangFei();
GuanYu guanYu = new GuanYu();

zhaoYun.nextGeneral = zhangFei;
zhangFei.nextGeneral = guanYu;

zhaoYun.tryCaoCao(99);

 

你可以試試,輸出結果和《三國演義》的劇情是否一致。

 

Android源碼中的責任鏈模式

 

(1)如果你讀完上文的代碼之后,沒有想到ViewGroup事件的分發處理機制,那么你不適合學習設計模式,還是先補充補充基礎知識吧。

 

Android開發中如何利用責任鏈模式

 

1)責任鏈模式可以對請求者和處理者關系解耦,提高代碼的靈活性。Broadcast可以分為異步的Normal Broadcast和根據優先級依次傳播的Ordered Broadcast(有序廣播)兩種,有序廣播根據優先級依次傳播,直到有接收者將其終止或所有接收者都不中止它,這是典型的責任鏈模式。

 

需要注意的幾個問題

 

1)責任鏈模式的最大缺點在于其對鏈中請求處理者的遍歷,如果處理者層級太多,尤其是在遞歸調用中,責任鏈模式非常影響性能。


向AI問一下細節

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

AI

资阳市| 武平县| 介休市| 娱乐| 宣化县| 武宁县| 宁波市| 根河市| 唐山市| 始兴县| 齐河县| 崇信县| 徐闻县| 廉江市| 洛川县| 忻州市| 津市市| 湟源县| 阿坝| 莒南县| 夹江县| 克东县| 昌邑市| 米泉市| 灵丘县| 柳林县| 阳曲县| 酉阳| 潞城市| 汉阴县| 左贡县| 宜城市| 资兴市| 徐水县| 东安县| 铁力市| 西昌市| 靖安县| 轮台县| 壶关县| 井研县|