日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

结合案例深入解析策略模式

發布時間:2025/6/17 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 结合案例深入解析策略模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、基本概念

策略模式是行為型設計模式。

其用意是針對一組算法,將每一個算法封裝到具有共同接口的獨立的類中,從而使得它們可以相互替換。

策略模式使得算法可以在不影響到客戶端的情況下發生變化。

二、結構

下面是基本結構:

?

?

三類角色:

  • 環境(Context)角色:持有一個Strategy的引用。
  • 抽象策略(Strategy)角色:這是一個抽象角色,通常由一個接口或抽象類實現。此角色給出所有的具體策略類所需的接口。
  • 具體策略(ConcreteStrategy)角色:包裝了相關的算法或行為。

三、案例

案例實現:

定義一族算法,可以實現對兩個數的操作,例如+、-、*、/等。

實現代碼整體框架圖:

?

?

具體代碼實現:

Context類:

/*** Context 是一個使用了某種策略的類。 實現了 Strategy 接口的實體策略類*/ public class Context {private Strategy strategy;public Context(Strategy strategy) {this.strategy = strategy;}public int executeStrategy(int num1, int num2){return strategy.doOperation(num1, num2);} } Strategy接口:/**策略的公共接口*/ public interface Strategy {int doOperation(int num1, int num2); }

?

三種對應的算法實現:

/** 算法1: 實現加法 */ public class OperationAdd implements Strategy {@Overridepublic int doOperation(int num1, int num2) {return num1 + num2;} } /** 算法2:實現減法 */ public class OperationSubstract implements Strategy{@Overridepublic int doOperation(int num1, int num2) {return num1 - num2;} } /** 算法3: 實現乘法 */ public class OperationMultiply implements Strategy{@Overridepublic int doOperation(int num1, int num2) {return num1 * num2;} }

?

測試類:

public class MyTest {public static void main(String[] args) {Context context = new Context(new OperationAdd());System.out.println("10 + 5 = " + context.executeStrategy(10, 5));context = new Context(new OperationSubstract());System.out.println("10 - 5 = " + context.executeStrategy(10, 5));context = new Context(new OperationMultiply());System.out.println("10 * 5 = " + context.executeStrategy(10, 5));} }

?

程序輸出:

10 + 5 = 15 10 - 5 = 5 10 * 5 = 50

?

四、總結

  • 策略模式的重心不是如何實現算法,而是如何組織、調用這些算法;
  • 策略模式一個很大的特點就是各個策略算法的平等性。對于一系列具體的策略算法,大家的地位是完全一樣的,正因為這個平等性,才能實現算法之間可以相互替換;
  • 使用策略模式可以避免使用多重條件(if-else)語句;
免費Java高級資料需要自己領取,涵蓋了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo高并發分布式等教程,一共30G。
傳送門:

轉載于:https://www.cnblogs.com/yuxiang1/p/11016999.html

總結

以上是生活随笔為你收集整理的结合案例深入解析策略模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。