日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

時光荏苒,歲月如梭,不知不覺2020就這么過去了。新的一年,預祝大家心想事成、身體健康。

基本介紹

策略模式是行為型設計模式的一種。

策略模式的核心思想是:定義算法族(可以理解為多組算法、行為),將其分別封裝起來,并且確保他們之間可以相互替換。這樣做可以將算法的變化獨立于使用算法的用戶。

可能通過這些專業的術語還是不太好理解什么是策略模式。那么我打個比方:中午了要去吃飯了,我們可以選擇米飯、面條、水餃、炒餅等等……這其中的每一個食物我們都可以將其看作是一個策略。

策略模式中體現出了三個設計原則:

1、將變化的代碼從不變的代碼中分離出來。
2、面向接口編程。
3、盡可能地少使用繼承,可以使用組合和聚合替代。

策略模式UML類圖

什么?都2021年了你還不知道“策略模式”?

 

類圖講解

Strategy:策略接口,抽象出了相關方法。
ConcreteStrategyA/B:具體策略類,實現了策略接口。
Context:環境對象,類中聚合了策略接口。
Client:客戶端測試類。

案例講解

案例:通過策略模式實現運動員通過不同方式進行游泳。

游泳行為接口 => 策略接口

public interface SwimBehavior {

  // 游泳
  void swim();
}

具體游泳行為

/**
 * 仰泳
 */
public class Backstroke implements SwimBehavior {

  @Override
  public void swim() {
    System.out.println("正在進行仰泳!");
  }
}

/**
 * 蛙泳
 */
public class Breaststroke implements SwimBehavior {

  @Override
  public void swim() {
    System.out.println("正在進行蛙泳!");
  }
}

/**
 * 潛泳
 */
public class Diving implements SwimBehavior {

  @Override
  public void swim() {
    System.out.println("正在進行潛泳!");
  }
}

游泳運動員 => 對應Context角色

public class Swimmers {

  // 游泳行為接口
  private SwimBehavior swimBehavior;

  // 運動員姓名
  private String name;

  // 構造方法
  public Swimmers(SwimBehavior swimBehavior) {
    this.swimBehavior = swimBehavior;
  }

  // 游泳
  public void swim() {
    System.out.print("比賽開始,運動員:" + name);
    swimBehavior.swim();
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }
}

客戶端測試類

public class Client {

  public static void main(String[] args) {
    Swimmers swimmers = new Swimmers(new Backstroke());
    swimmers.setName("編程小菜鳥");
    swimmers.swim();
  }
}

執行結果

什么?都2021年了你還不知道“策略模式”?

 

總結

1、使用策略模式的關鍵在于學會分析項目中變化和不變的部分。

2、使用策略模式可以促使代碼變得更加有彈性、易于擴展、易于維護。

3、策略模式符合開閉原則,當需要新增行為時只需添加一種策略即可。

4、策略模式的缺點是當策略過多時會導致類的數量龐大。

今天的分享就到這里了,如果感覺“菜鳥”寫的文章還不錯,記得點贊、轉發加關注呦!你們的支持就是我堅持下去的動力。文章哪里寫的有問題的也希望大家可以指出,我會虛心受教。

分享到:
標簽:策略 模式
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定