Java策略模式

2020-12-16 kevin雜談

在策略模式中,可以在運行時更改類行為或其算法。 這種類型的設計模式屬於行為模式。

在策略模式中,創建表示各種策略對象和其行為根據其策略對象而變化的上下文對象。 策略對象更改上下文對象的執行算法。

實現實例

在這個示例中,將創建一個 Strategy 接口,定義實現策略接口的操作和具體策略類。 上下文類- Context 是使用策略的類。

StrategyPatternDemo是一個演示類,將使用上下文- Context 和策略對象來演示上下文行為基於其部署或使用的策略的變化。

策略模式示例的結構如下圖所示 -

第1步

創建一個類接口,其代碼如下 -

Strategy.java

public interface Strategy {public int doOperation(int num1, int num2);}

第2步

創建三個實現相同接口的具體類。其代碼分別如下 -

OperationAdd.java

public class OperationAdd implements Strategy{@Override public int doOperation(int num1, int num2) { return num1 + num2; }}

OperationSubstract.java

public class OperationSubstract implements Strategy{@Override public int doOperation(int num1, int num2) { return num1 - num2; }}

OperationMultiply.java

public class OperationMultiply implements Strategy{@Override public int doOperation(int num1, int num2) { return num1 * num2; }}

創建上下文(Context )類,其代碼如下 -

Context.java

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); }}

第3步

使用上下文- Context 在更改其策略時查看行為更改。

StrategyPatternDemo.java

public class StrategyPatternDemo {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)); }}

第4步

驗證輸出,執行上面的代碼得到以下結果 -

10 + 5 = 1510 - 5 = 510 * 5 = 50

相關焦點

  • 通俗易懂的告訴你「策略模式」在java多線程中的應用
    「策略模式」這種設計模式。下面我們就一起來看看「策略模式」是如何運用在javaduo線程中的。01什麼是「策略模式」廢話少說,先看定義!再結合「策略模式」的定義大致就能明白什麼是「策略模式」03「策略模式」在多線程的應用了解完什麼是「策略模式」之後,我們再來看一看在java
  • 設計模式之策略模式
    行為型設計模式策略模式一簡介當一個對象有多種行為要執行時,我們可以使用策略模式,讓對象自由選擇執行的行為種類,避免使用if…else if….else if…這種嵌套代碼如果我們使用策略模式,某個行為要修改代碼,我們只要修改對應行為的類,都不用動到舊代碼。後期如果要撤掉某種行為或增加某種行為,都比較方便。二例子假設系統維護裡,會發送命令:分析系統cpu使用情況,分析系統memory使用情況,分析系統io情況。後端系統執行命令後,將結果傳回前端,供界面展示結果,畫趨勢圖。
  • Java設計模式之策略模式詳解
    前言在軟體領域中,設計模式作為一種經典的開發實踐常常需要我們去深入的理解,而策略模式作為設計模式的一種,使用頻率也是相對來說比較高的,在Java中,當我們學習TreeSet集合的時候,就採用了經典的策略模式的思想,本文主要講解策略模式。
  • ...設計模式:實戰策略模式「模擬多種營銷類型優惠券,折扣金額計算...
    策略模式是一種行為模式,也是替代大量ifelse的利器。六、策略模式重構代碼。接下來使用策略模式來進行代碼優化,也算是一次很小的重構。與上面面向流程式的開發這裡會使用設計模式,優惠代碼結構,增強整體的擴展性。1.
  • Java門面模式(或外觀模式)
    門面模式(或外觀模式)隱藏系統的複雜性,並為客戶端提供一個客戶端可以訪問系統的接口。 這種類型的設計模式屬於結構模式,因為此模式為現有系統添加了一個接口以隱藏其複雜性。門面模式(或外觀模式)的實現實例結構如下圖中所示 -第1步創建一個接口,如下 -Shape.javapublic interface Shape {void draw
  • C語言,去你的策略模式!
    但是在使用過程中,必定是不如自帶這些特性的語言方便好用的,比如C++\java等。一旦要通過C語言來實現各種設計模式,必定會在嚴謹地維護類層次上造成非常繁瑣和臃腫的代碼。這是因為C++/java等自帶一套面向對象的工具,而C語言要在代碼設計中,不斷地根據實際情況來創造面向對象的工具。
  • 程式設計師:如何使用SpringBoot的策略模式、抽象工廠和反射
    設計模式java的設計模式大體上分為三大類:創建型模式(5種):工廠方法模式,抽象工廠模式,單例模式,建造者模式,原型模式。結構型模式(7種):適配器模式,裝飾器模式,代理模式,外觀模式,橋接模式,組合模式,享元模式。行為型模式(11種):策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解釋器模式。
  • 設計模式之策略模式(Java實現例子說明)
    設計模式之策略模式小王在和同事正在吹牛時,領導過來了,小王啊,你又在吹牛了?別吹了,幹點正活,下周要去春遊,你給出幾種方案。小王一聽去旅遊,屁顛屁顛地去幹活了。這個其實就是一個設計模式,叫做策略模式。策略模式(Strategy Pattern):定義一組算法,將每個算法封裝起來,並且使他們之間可以互換。策略模式是一個簡單的模式也叫做政策模式。
  • Java抽象工廠模式
    抽象工廠模式是一個超級工廠,用來創建其他工廠。 這個工廠也被稱為工廠的工廠。 這種類型的設計模式屬於創建模式,因為此模式提供了創建對象的最佳方法之一。在抽象工廠模式中,接口負責創建相關對象的工廠,而不明確指定它們的類。 每個生成的工廠可以按照工廠模式提供對象。
  • 從Java類庫看設計模式
    在JDK中實際上有一個對Observer模式的簡單的實現:就是類java.util.Observerable和接口java.util.Observer。java.util.Observerable類對應於Subject,而java.util.Observer就是觀察者了。JDK中並沒有把這兩個部分都設計為接口,而是讓類java.util.Observerable提供了部分的實現,簡化了許多編程的工作。當然,這也減少了一定的靈活性。
  • 如何應用策略設計模式分離JDBC資料庫連接中的外部環境信息
    軟體項目實訓及課程設計指導——如何應用策略設計模式分離JDBC資料庫連接中的外部環境信息1、什麼是策略(Strategy)設計模式策略設計模式把「算法」(也就是軟體應用系統中的業務規則或者待實現的功能等)和「環境」(封裝軟體應用系統在實際應用時的場景)相互分離
  • Java設計模式:三大類工廠方法模式
    GOF在《設計模式》一書中將工廠模式分為兩類:工廠方法模式(Factory Method)與抽象工廠模式(Abstract Factory)。將簡單工廠模式(Simple Factory)看為工廠方法模式的一種特例,兩者歸為一類。  二、簡單工廠模式  簡單工廠模式又稱靜態工廠方法模式。重命名上就可以看出這個模式一定很簡單。
  • 重學Java 設計模式:實戰外觀模式
    測試驗證七、總結一、前言三、外觀模式介紹外觀模式,圖片來自 refactoringguru.cn外觀模式也叫門面模式,主要解決的是降低調用方的使用接口的複雜邏輯組合。── domain │ │ │ └── UserInfo.java │ │ ├── web │ │ │ └── HelloWorldController.java │ │ └── HelloWorldApplication.java
  • Java的單例模式
    一、什麼是單例模式?
  • java 23種設計模式及其在spring,tomcat,jdk中的應用
    結構型模式適配器模式、橋接模式、裝飾模式、組合模式、外觀模式、享元模式、代理模式。2.3. 行為型模式模版模式、命令模式、迭代器模式、觀察者模式、中介者模式、備忘錄模式、解釋器模式、狀態模式、策略模式、責任鏈模式、訪問者模式。
  • 使用Java API在Jedis中實現DAO設計模式
    在本文中,我們將學習Jedis Java客戶端中的DAO設計模式和實現。DAO模式被實現為客戶端應用程式和資料庫之間的一層。客戶端應用程式不必依賴基礎資料庫交互API(低級)。Redis and Jedis在 Windows 上安裝 Redis在 Windows 上安裝 Eclipse創建 Maven 項目創建 SiteDaoRedisImplTest.java
  • Java設計模式之行為型模式
    行為型模式策略模式【strategy】(接口主要) 【學習難度:★☆☆☆☆,使用頻率:★★★★☆】定義:策略模式定義了一系列算法,並將每個算法封裝起來,使他們可以相互替換,且算法的變化不會影響到使用算法的客戶。
  • 大神詳解,這麼詳細的Java設計模式不收藏可惜了
    為什麼再看一遍設計模式,主要有幾個原因:***,很多優秀的源碼基本都使用了設計模式,明確設計模式能夠更好的看源碼。第二,很多中間件設計理念也是基於設計模式的,還有其他的語言,都有自己的設計優秀實踐。對於我來說,設計模式始於java,不止於java。第三,有了這種規範,可以更好的和他人溝通,言簡意賅。
  • 設計模式——策略模式
    策略模式策略這個詞應該怎麼理解,打個比方說,我們出門的時候會選擇不同的出行方式,比如騎自行車、坐公交、坐火車、坐飛機、坐火箭等等,這些出行方式,每一種都是一個策略。策略模式(Strategy):它定義了算法家族,分別封裝起來,讓它們之間可以互相替換,此模式讓算法的變化,不會影響到使用算法的客戶。
  • Java Singleton設計模式DEMO
    當您只想擁有給定類的一個實例時,將使用單例設計模式。它是一種創造性的設計模式,我們處理對象的創建。動機和現實世界的例子在面向對象的設計中,某些類只有一個實例非常重要。那是因為它們代表了一種獨特的東西,這是同類產品中的一種。