新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Android 設計模式之策略模式

        Android 設計模式之策略模式

        作者: 時間:2016-09-12 來源:網絡 收藏

        策略模式的定義:定義算法族,分別封裝起來,讓它們之間可以互相替換,此模式讓算法的變化獨立于使用算法的客戶。本質:分離算法,選擇實現

        本文引用地址:http://www.104case.com/article/201609/304656.htm

        面向對象設計原則:

        封裝變化

        多用組合,少用繼承

        針對接口編程,不針對實現編程

        找出應用中可能需要變化之處,把它們獨立出來,不要和那些不需要變化的代碼混在一起

        類圖

        應用場景:

        1、 多個類只區別在表現行為不同,可以使用Strategy模式,在運行時動態選擇具體要執行的行為。

        2、 需要在不同情況下使用不同的策略(算法),或者策略還可能在未來用其它方式來實現。

        3、 對客戶隱藏具體策略(算法)的實現細節,彼此完全獨立。

        優點:

        1、 策略模式提供了管理相關的算法族的辦法。策略類的等級結構定義了一個算法或行為族。恰當使用繼承可以把公共的代碼轉移到父類里面,從而避免重復的代碼。

        2、 策略模式提供了可以替換繼承關系的辦法。繼承可以處理多種算法或行為。如果不是用策略模式,那么使用算法或行為的環境類就可能會有一些子類,每一個子類提供一個不同的算法或行為。但是,這樣一來算法或行為的使用者就和算法或行為本身混在一起。決定使用哪一種算法或采取哪一種行為的邏輯就和算法或行為的邏輯混合在一起,從而不可能再獨立演化。繼承使得動態改變算法或行為變得不可能。

        3、 使用策略模式可以避免使用多重條件轉移語句。多重轉移語句不易維護,它把采取哪一種算法或采取哪一種行為的邏輯與算法或行為的邏輯混合在一起,統統列在一個多重轉移語句里面,比使用繼承的辦法還要原始和落后。

        缺點:

        1、客戶端必須知道所有的策略類,并自行決定使用哪一個策略類。這就意味著客戶端必須理解這些算法的區別,以便適時選擇恰當的算法類。換言之,策略模式只適用于客戶端知道所有的算法或行為的情況。

        2、 策略模式造成很多的策略類,每個具體策略類都會產生一個新類。有時候可以通過把依賴于環境的狀態保存到客戶端里面,而將策略類設計成可共享的,這樣策略類實例可以被不同客戶端使用。換言之,可以使用享元模式來減少對象的數量。



        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 锦州市| 鹿泉市| 丽水市| 湛江市| 襄垣县| 周口市| 定西市| 民和| 泊头市| 红桥区| 张家川| 阳西县| 安义县| 闻喜县| 舟曲县| 隆昌县| 河曲县| 泽库县| 南丹县| 深泽县| 福建省| 牟定县| 青海省| 宁阳县| 秭归县| 金昌市| 中宁县| 西乌珠穆沁旗| 邢台县| 黄浦区| 华蓥市| 建水县| 静宁县| 弥勒县| 蓬安县| 驻马店市| 水城县| 卢氏县| 鹿邑县| 海宁市| 合作市|