国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

二十三種設(shè)計(jì)模式第十四篇--策略模式

這篇具有很好參考價(jià)值的文章主要介紹了二十三種設(shè)計(jì)模式第十四篇--策略模式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

策略模式:主要圍繞一個(gè)類的行為或者其算法在運(yùn)行時(shí)更改,也是一種行為型模式。

在軟件開發(fā)中,我們經(jīng)常遇到需要根據(jù)不同的情況選擇不同算法或行為的情況。傳統(tǒng)的做法是使用大量的條件語句來實(shí)現(xiàn)這種邏輯,但這樣的實(shí)現(xiàn)方式往往難以維護(hù)和擴(kuò)展。策略模式(Strategy Pattern)提供了一種優(yōu)雅的解決方案,可以讓我們靈活地處理多種算法和行為,同時(shí)提高代碼的可維護(hù)性和可擴(kuò)展性。

策略模式的意義

策略模式的主要目的是將算法的定義、實(shí)現(xiàn)和使用相互解耦,使得它們可以獨(dú)立變化。它通過將不同的算法封裝在獨(dú)立的策略類中,并定義一個(gè)通用的接口或抽象類來統(tǒng)一它們的調(diào)用方式。這樣一來,客戶端只需要與通用接口交互,而不需要關(guān)心具體的算法實(shí)現(xiàn)細(xì)節(jié)。

策略模式的核心思想是將算法視為一個(gè)可互換的組件,客戶端可以在運(yùn)行時(shí)動(dòng)態(tài)地選擇適合的策略。這種靈活性使得策略模式特別適用于需要根據(jù)不同的條件或偏好來調(diào)整算法的情況。例如,一個(gè)電商平臺(tái)可以根據(jù)用戶的購買歷史和偏好選擇不同的優(yōu)惠策略來計(jì)算商品的價(jià)格。

策略模式的實(shí)現(xiàn)

在策略模式中,我們通常會(huì)定義一個(gè)策略接口或抽象類,用于統(tǒng)一不同策略的調(diào)用方式。然后,針對(duì)每種具體的算法或行為,我們創(chuàng)建相應(yīng)的策略類,實(shí)現(xiàn)策略接口,并提供具體的算法實(shí)現(xiàn)。

客戶端在需要使用算法的地方,通過策略接口與具體的策略類進(jìn)行交互??蛻舳丝梢愿鶕?jù)實(shí)際需求,在運(yùn)行時(shí)動(dòng)態(tài)地選擇合適的策略類,并將其注入到上下文對(duì)象中。上下文對(duì)象負(fù)責(zé)調(diào)用所選策略的算法,并返回結(jié)果給客戶端。

這種結(jié)構(gòu)使得我們可以靈活地添加新的策略類或修改現(xiàn)有的策略類,而不會(huì)對(duì)客戶端代碼產(chǎn)生影響。策略模式將算法的變化對(duì)客戶端透明,使得客戶端只需要關(guān)注業(yè)務(wù)邏輯,而不需要關(guān)心具體的算法實(shí)現(xiàn)。

策略模式的優(yōu)點(diǎn)

使用策略模式可以帶來多個(gè)優(yōu)點(diǎn):

  1. 靈活性和可擴(kuò)展性:策略模式通過將算法封裝在獨(dú)立的策略類中,使得可以在運(yùn)行時(shí)動(dòng)態(tài)地選擇和切換算法,而無需修改客戶端的代碼。這種靈活性使得系統(tǒng)更容易擴(kuò)展和適應(yīng)變化。
  2. 可維護(hù)性:策略模式將不同的算法或行為封裝在獨(dú)立的策略類中,使得代碼結(jié)構(gòu)清晰,易于理解和維護(hù)。每個(gè)策略類負(fù)責(zé)實(shí)現(xiàn)一個(gè)特定的算法,修改或調(diào)試一個(gè)策略對(duì)其他策略沒有影響,降低了代碼的復(fù)雜性。
  3. 代碼復(fù)用:策略模式可以促進(jìn)代碼的復(fù)用。不同的策略類可以共享相同的接口或抽象類,從而使得相似的算法可以通過繼承或?qū)崿F(xiàn)來共享代碼。這樣可以避免代碼的重復(fù)編寫,提高開發(fā)效率。

策略模式的應(yīng)用場景

策略模式在以下情況下特別適用:

  1. 當(dāng)需要根據(jù)不同的條件或偏好選擇不同算法或行為時(shí),可以使用策略模式來靈活地切換和調(diào)整算法。

  2. 當(dāng)有多個(gè)相似的算法或行為,但它們的實(shí)現(xiàn)細(xì)節(jié)不同,可以將每個(gè)算法封裝在獨(dú)立的策略類中,以提高代碼的可讀性和可維護(hù)性。

  3. 當(dāng)某個(gè)算法的實(shí)現(xiàn)經(jīng)常變化,或者希望在運(yùn)行時(shí)動(dòng)態(tài)地選擇算法時(shí),可以使用策略模式來避免頻繁修改客戶端的代碼。

  4. 當(dāng)需要將算法的定義、實(shí)現(xiàn)和使用相互解耦,以提高代碼的模塊化和可測試性時(shí),策略模式也是一個(gè)很好的選擇。

代碼實(shí)現(xiàn)

二十三種設(shè)計(jì)模式第十四篇--策略模式,# 設(shè)計(jì)模式,設(shè)計(jì)模式,策略模式

public interface Strategy {

   public int doOperation(int num1, int num2);

}
public class OperationAdd implements Strategy {
   @Override
   public int doOperation(int num1, int num2) {
      return num1 + num2;
   }
}
public class OperationMultiply implements Strategy {
   @Override
   public int doOperation(int num1, int num2) {
      return num1 * num2;
   }
}
public class OperationSubtract implements Strategy {
   @Override
   public int doOperation(int num1, int num2) {
      return num1 - num2;
   }
}
public class Context {
   //真實(shí)采用的策略
   private Strategy strategy;
 
   public Context(Strategy strategy){
      this.strategy = strategy;
   }
 
   public int executeStrategy(int num1, int num2){

      return strategy.doOperation(num1, num2);
   }


}
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 OperationSubtract());      
      System.out.println("10 - 5 = " + context.executeStrategy(10, 5));
 
      context = new Context(new OperationMultiply());    
      System.out.println("10 * 5 = " + context.executeStrategy(10, 5));
   }
}

結(jié)論

策略模式是一種優(yōu)秀的設(shè)計(jì)模式,它能夠靈活地處理多種算法和行為,提高代碼的可維護(hù)性、可擴(kuò)展性和可測試性。通過將算法封裝在獨(dú)立的策略類中,并通過統(tǒng)一的接口來調(diào)用,我們可以使得算法的變化對(duì)客戶端透明,從而降低了代碼的耦合性。策略模式的應(yīng)用可以讓我們的代碼更加靈活、可讀和可維護(hù),是值得推廣和應(yīng)用的一種設(shè)計(jì)模式。文章來源地址http://www.zghlxwxcb.cn/news/detail-527941.html

到了這里,關(guān)于二十三種設(shè)計(jì)模式第十四篇--策略模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 二十三種設(shè)計(jì)模式第十五篇--模版方法模式

    二十三種設(shè)計(jì)模式第十五篇--模版方法模式

    模板方法模式是一種行為型設(shè)計(jì)模式,它定義了一個(gè)算法的骨架,而將一些步驟延遲到子類中實(shí)現(xiàn)。通過使用這種模式,我們可以在不改變算法結(jié)構(gòu)的情況下,重新定義算法中的某些特定步驟。 模板方法模式的核心思想是將一個(gè)算法分解為一系列步驟,并將可變的部分封裝在

    2024年02月12日
    瀏覽(23)
  • 二十三種設(shè)計(jì)模式第十六篇--觀察者模式

    二十三種設(shè)計(jì)模式第十六篇--觀察者模式

    觀察者模式是一種行為型設(shè)計(jì)模式,它建立了一種對(duì)象間的一對(duì)多依賴關(guān)系,使得當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生變化時(shí),所有依賴于它的對(duì)象都會(huì)得到通知并自動(dòng)更新。這種模式可以實(shí)現(xiàn)對(duì)象間的松耦合通信,提高系統(tǒng)的可擴(kuò)展性和靈活性。 觀察者模式的核心是兩個(gè)角色:主題(

    2024年02月12日
    瀏覽(29)
  • 二十三種設(shè)計(jì)模式:工廠模式

    工廠模式是一種創(chuàng)建型設(shè)計(jì)模式,它提供了一種創(chuàng)建對(duì)象的最佳方式,而無需暴露對(duì)象的創(chuàng)建邏輯。工廠模式通過使用工廠方法來解決這個(gè)問題,該方法將對(duì)象的創(chuàng)建委托給子類來處理。 在工廠模式中,我們定義一個(gè)抽象工廠類,它包含一個(gè)抽象的工廠方法,該方法返回一個(gè)

    2024年02月07日
    瀏覽(23)
  • 二十三種設(shè)計(jì)模式(待更)

    二十三種設(shè)計(jì)模式(待更)

    資料來源于老師講解以及大佬的設(shè)計(jì)模式倉庫 zhengqingya 將對(duì)象和類按某種布局組成更大的結(jié)構(gòu),并同時(shí)保持結(jié)構(gòu)的靈活和?效。 1.適配器 適配器就是將原先無法直接使用的某個(gè)接口或者類通過適配器模式轉(zhuǎn)換為可以使用的接口或者類。將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外

    2024年02月08日
    瀏覽(18)
  • 二十三種設(shè)計(jì)模式第二十篇--備忘錄模式

    二十三種設(shè)計(jì)模式第二十篇--備忘錄模式

    備忘錄模式,備忘錄模式屬于行為型模式。它允許在不破壞封裝的情況下捕獲和恢復(fù)對(duì)象的內(nèi)部狀態(tài)。 保存一個(gè)對(duì)象的某個(gè)狀態(tài),以便在適當(dāng)?shù)臅r(shí)候恢復(fù)對(duì)象,該模式通過創(chuàng)建一個(gè)備忘錄對(duì)象來保存原始對(duì)象的狀態(tài),并將其存儲(chǔ)在一個(gè)負(fù)責(zé)管理備忘錄的負(fù)責(zé)人對(duì)象中。 備忘

    2024年02月14日
    瀏覽(23)
  • 【中級(jí)軟件設(shè)計(jì)師】—(針對(duì)上午題)二十三種設(shè)計(jì)模式(三十九)

    【中級(jí)軟件設(shè)計(jì)師】—(針對(duì)上午題)二十三種設(shè)計(jì)模式(三十九)

    簡單工廠模式代碼實(shí)現(xiàn)如下: ?? 意圖要背 工廠方法代碼實(shí)現(xiàn)如下: 抽象工廠模式代碼如下: 生成器模式代碼如下: 原型模式代碼實(shí)現(xiàn)如下: 單例模式代碼如下: 橋接模式代碼實(shí)現(xiàn)如下: 組合模式添加和刪除代碼實(shí)現(xiàn): 裝飾器模式代碼實(shí)現(xiàn): 外觀模式代碼實(shí)現(xiàn): 代理模

    2024年02月07日
    瀏覽(36)
  • 二十三種設(shè)計(jì)模式全面解析-抽象工廠模式:創(chuàng)造無限可能的工廠之道

    在軟件開發(fā)中,我們經(jīng)常面臨著創(chuàng)建一系列相關(guān)或相互依賴的對(duì)象的挑戰(zhàn)。在這個(gè)過程中,我們希望能夠靈活地創(chuàng)建對(duì)象,又不與具體的類耦合。那么有沒有一種設(shè)計(jì)模式可以幫助我們實(shí)現(xiàn)這一目標(biāo)呢?答案是肯定的!讓我?guī)氵M(jìn)入抽象工廠模式的世界,一起探索創(chuàng)造無限可

    2024年02月07日
    瀏覽(24)
  • 二十三種設(shè)計(jì)模式全面解析-原型模式進(jìn)階之原型管理器:集中管理對(duì)象原型的設(shè)計(jì)模式之道

    在軟件開發(fā)中,我們經(jīng)常需要?jiǎng)?chuàng)建和復(fù)制對(duì)象。然而,有時(shí)候直接創(chuàng)建對(duì)象可能會(huì)導(dǎo)致性能下降或代碼重復(fù)。為了解決這些問題,原型模式應(yīng)運(yùn)而生。而使用原型管理器(Prototype Manager)來集中管理原型對(duì)象可以進(jìn)一步提高靈活性和可維護(hù)性。本文將詳細(xì)介紹原型管理器的用

    2024年02月07日
    瀏覽(22)
  • 二十三種設(shè)計(jì)模式全面解析-裝飾器模式的高級(jí)應(yīng)用:打造靈活可擴(kuò)展的通知系統(tǒng)

    在現(xiàn)代軟件開發(fā)中,通知系統(tǒng)是一個(gè)廣泛應(yīng)用的功能,用于實(shí)時(shí)向用戶發(fā)送各種類型的通知,如短信、微信、郵件以及系統(tǒng)通知。然而,通知系統(tǒng)的需求通常是多變且動(dòng)態(tài)的,因此需要一種靈活可擴(kuò)展的設(shè)計(jì)模式來滿足不同類型的通知需求。 在前面一篇文章中,我們介紹了什

    2024年02月06日
    瀏覽(27)
  • 二十三種設(shè)計(jì)模式全面解析-橋接模式的高級(jí)應(yīng)用:構(gòu)建靈活的跨平臺(tái)UI框架

    在軟件開發(fā)的世界中,橋接模式(Bridge Pattern)作為一種設(shè)計(jì)模式,旨在將抽象部分與實(shí)現(xiàn)部分分離,從而使它們可以獨(dú)立地變化。這一模式的應(yīng)用不僅有助于提高代碼的可維護(hù)性,還在一些復(fù)雜的場景中展現(xiàn)出其真正的價(jià)值。 前面一篇文章中,我們介紹了什么是橋接模式?

    2024年02月05日
    瀏覽(35)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包