日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

策略模式(Strategy)

系統 3220 0
?? Strategy 屬于行為模式,用意是針對一組算法,將每一個算法封裝到具有共同接口的獨立的類中,從而使得它們可以相互替換,它可以客戶端的選擇來,決定用什么實現。
??? Context(上下文環境) 其內組合了一個策略的抽象類,然后具體的實現交給繼承策略抽象類的子類去實現。
??? 從上面一句話,可以看到,Strategy 涉及到三個角色:
? Context環境角色 :它是使用策略模式的場景,即持有一個策略類。
?? 抽象策略角色: 這是一個抽象角色,通過是由一個接口事抽象類實現,這個類提供所有的具體策略所需的接口。
??? 具體策略(ConcreteStrategy)角色 :實現抽象策略類提供的接口,不同的實現,有不同的具體策略類。

策略模式(Strategy)


??? 模板可以是這樣的:
上下文角色:
    
public class Context
{
   private Strategy strategy;

   /**
   * 策略方法,算法
   */
    public void algorithm()
    {
      strategy.strategyAlgorithm();
    }
}


  


抽象策略角色:
    
  public abstract class Strategy
  {
     /**
      * 抽象策略方法,算法
      */
    public abstract void strategyAlgorithm();

   }

  


具體策略類:

    
   
public class ConcreteStrategy extends Strategy
{
    /**
     *  策略實現
     */
    public void strategyAlgorithm()
    {
       //different   subStrategy have different algorithm
     }
}

  


從這個模板中可以知道:在同一個環境中,抽象策略中只是定義了行為,相同的行為而不同的實現方式交由具體的策略類去實現。

何時使用策略模式:
?? a.一個系統里面有許多類,但是他們的區別只是他們的行為,那么可以使用Strategy動態讓一個對象選擇行為的一種。
?? b.一個系統動態的在幾個算法中選擇一種。
  c.一個系統的算法使用的數據不可以讓客戶端知道。
  d.如果一個對象有很多的行為,不用恰當的模式,這些行為就只好使用多重條件選擇語句來實現,如果這時使用策略模式可以避免使用難以維護的多重選擇語句。

Strategy的優點與缺點:
  a.恰當使用繼承,把公用代碼移動到父類中,從而避免重復的代碼。
  b.策略模式提供了可以替換繼承者關系的辦法。
  c.避免了多重條件的使用
fault:
??? a.客戶端必須知道理解所有的策略,算法,并自行決定使用哪一個策略類。
  b.會產生很多具體算法的策略實現類,可以使用享元模式來減少對象的數量。


?

策略模式(Strategy)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!??!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 建阳市| 宁陵县| 凤山县| 望江县| 申扎县| 锦州市| 邹平县| 平陆县| 台南市| 江山市| 馆陶县| 鱼台县| 宁陵县| 游戏| 双牌县| 衡南县| 乌什县| 广水市| 长治县| 澄迈县| 荃湾区| 临沭县| 阿克苏市| 江阴市| 黎川县| 富宁县| 互助| 信阳市| 漳州市| 隆安县| 江孜县| 洪江市| 宁安市| 池州市| 牡丹江市| 博乐市| 广河县| 绵阳市| 岳阳县| 镇原县| 左贡县|