国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

設計模式之十一:策略模式

2019-11-09 17:22:33
字體:
來源:轉載
供稿:網友

       策略模式(Strategy Pattern)也稱作政策模式(Policy Pattern)。

       定義:Define a family of algorithms ,encapsulat each one ,and make them interchangeable.(定義一組算法,將每個算法封裝起來,并且使他們之間可以互換。)

       通用類圖:

       

       策略模式的三個角色:

        Context封裝角色: 起承上啟下的封裝作用,屏蔽高層模塊對策略、算法的直接訪問,封裝可能存在的變化。

        Strategy抽象策略角色:定義每個策略或算法必須具有的方法和屬性

        ConcreteStrategy具體策略角色:實現抽象策略中的操作,該類含有具體的算法。

        優點:

        1、算法可以自由切換;

        2、避免了使用多重條件判斷;

        3、擴展性好;

        缺點:

        1  、客戶端必須知道所有的策略類,并自行決定使用哪一個策略類。這就意味著客戶端必須理解這些算法的區別,以便適時選擇恰當的算法類。換言之,策略模式只適用于客戶端知道所有的算法或行為的情況。        2、 策略模式造成很多的策略類,每個具體策略類都會產生一個新類。有時候可以通過把依賴于環境的狀態保存到客戶端里面,而將策略類設計成可共享的,這樣策略類實例可以被不同客戶端使用。換言之,可以使用享元模式來減少對象的數量。

       實現:

       

 /// <summary>    /// 抽象的策略角色    /// </summary>    public interface Strategy    {        //策略模式的運算法則        public void doSomething();    }    /// <summary>    /// 具體的策略角色1    /// </summary>    public class ConcreteStrategy1 : Strategy    {        public void doSomething()        {        }    }    /// <summary>    /// 具體的策略角色2    /// </summary>    public class ConcreteStrategy2 : Strategy    {        public void doSomething()        {        }    }    public class Context    {        PRivate Strategy strategy = null;        public Context(Strategy _strategy)        {            strategy = _strategy;        }        /// <summary>        /// 封裝后的策略方法        /// </summary>        public void doAnything()        {            strategy.doSomething();        }    }    public class Client    {        public static void main(String[] args)        {            //聲明一個具體的策略            Strategy strategy = new ConcreteStrategy1();            //聲明上下文對象            Context context = new Context(strategy);            //執行封裝后的方法            context.doAnything();        }    } 好了,這一章就寫到這,歡迎大家加入QQ群:280993838 。或者關注我的公眾號:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 淮阳县| 都江堰市| 九江县| 扶余县| 鹤山市| 青冈县| 密云县| 河南省| 麻阳| 阜康市| 乌什县| 云霄县| 庆安县| 印江| 报价| 千阳县| 济阳县| 胶南市| 黎城县| 永胜县| 平阴县| 桂平市| 五大连池市| 炉霍县| 湖北省| 呈贡县| 五台县| 泰和县| 通城县| 涪陵区| 新津县| 卢氏县| 台江县| 四川省| 泰来县| 皮山县| 顺昌县| 长岛县| 济源市| 蒙城县| 吉首市|