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

【python設(shè)計模式】13、策略模式

這篇具有很好參考價值的文章主要介紹了【python設(shè)計模式】13、策略模式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

哲學思想:

策略模式是一種設(shè)計模式,它可以使得我們在程序中根據(jù)需要動態(tài)地選擇算法的具體實現(xiàn)方式。策略模式的思想源于哲學中的“多元論”(pluralism)和“實用主義”(pragmatism)。

多元論認為,世界上存在著許多不同的觀點和方法,沒有一個固定的標準或者方法是絕對正確的。實用主義則認為,我們應(yīng)該根據(jù)具體情況和實際需要選擇最合適的方法,而不是一味追求理論上的完美。

在策略模式中,我們將每個算法實現(xiàn)封裝成一個單獨的類,這些類之間可以相互替換,從而實現(xiàn)動態(tài)選擇算法的目的。這樣做的好處是,我們可以在運行時根據(jù)具體情況選擇最合適的算法,而不需要在編譯時就確定使用哪個算法。這樣的設(shè)計使得程序更加靈活、可擴展和可維護。

總之,策略模式的思想是在多元論和實用主義的基礎(chǔ)上,通過將不同的算法實現(xiàn)封裝成單獨的類,實現(xiàn)動態(tài)選擇算法的目的。這種設(shè)計思想可以使程序更加靈活、可擴展和可維護,從而更好地適應(yīng)不同的實際需求。

簡介:

策略模式(Strategy Pattern)是一種行為型設(shè)計模式,它允許在運行時動態(tài)地改變對象的行為。這種模式將不同的算法封裝成獨立的策略類,并使它們之間可以相互替換,從而使得算法的選擇可以獨立于使用它的客戶端而變化。

策略模式包含三個角色:

  1. 策略接口(Strategy Interface):定義了算法的接口,具體的策略類需要實現(xiàn)這個接口。

  2. 具體策略類(Concrete Strategy Class):實現(xiàn)了策略接口定義的算法。

  3. 環(huán)境類(Context Class):持有一個策略類的引用,并且在需要時調(diào)用策略類中的算法。

使用策略模式可以使得代碼更加靈活和可擴展,因為可以動態(tài)地切換算法而不需要改變客戶端代碼。同時,策略模式也可以避免大量的條件語句和switch語句,提高代碼的可讀性和可維護性。

優(yōu)點:

  1. 可以提高代碼的靈活性和可擴展性。通過將算法封裝成獨立的策略類,可以在運行時動態(tài)地切換算法而不需要修改客戶端代碼。

  2. 可以避免大量的條件語句和switch語句。如果不使用策略模式,可能需要編寫很多條件語句或switch語句來處理不同的算法,這會使得代碼變得復(fù)雜、難以維護和擴展。

  3. 可以提高代碼的可讀性和可維護性。策略模式將算法的實現(xiàn)從客戶端代碼中分離出來,使得代碼更加簡潔、清晰和易于理解。

  4. 可以支持不同的算法組合。通過將算法封裝成獨立的策略類,可以方便地實現(xiàn)不同的算法組合,從而滿足不同的需求。

  5. 可以提高代碼的重用性。如果需要在不同的應(yīng)用場景中使用相同的算法,可以將這些算法封裝成獨立的策略類,并在不同的應(yīng)用場景中復(fù)用這些策略類。

缺點:

  1. 增加了類的數(shù)量。策略模式需要定義多個策略類來實現(xiàn)不同的算法,這樣就會增加類的數(shù)量,使得代碼變得復(fù)雜。

  2. 客戶端需要了解不同的策略類??蛻舳诵枰啦煌牟呗灶?,才能選擇合適的算法,這可能會增加客戶端代碼的復(fù)雜性。

  3. 策略模式可能會導(dǎo)致性能下降。如果使用策略模式來處理簡單的算法,可能會因為多次調(diào)用策略類的方法而導(dǎo)致性能下降。

  4. 策略模式可能會導(dǎo)致代碼重構(gòu)。如果需要添加新的算法,可能需要創(chuàng)建新的策略類,并修改環(huán)境類的代碼,這可能會導(dǎo)致代碼重構(gòu)。

實際應(yīng)用場景:

  1. 電商平臺優(yōu)惠券:電商平臺常常會推出各種優(yōu)惠券活動,不同的優(yōu)惠券有不同的優(yōu)惠規(guī)則。使用策略模式可以將優(yōu)惠規(guī)則封裝成不同的策略類,用戶可以根據(jù)需要選擇不同的優(yōu)惠策略。

  2. 游戲 AI:游戲中的 AI 通常需要根據(jù)不同的情況選擇不同的策略來進行決策。例如,在一個戰(zhàn)略游戲中,AI 可以根據(jù)不同的戰(zhàn)局情況選擇不同的進攻策略或防守策略。

  3. 訂單處理:在訂單處理系統(tǒng)中,不同的訂單可能需要不同的處理策略。例如,某些訂單需要進行人工審核,而另一些訂單可以直接自動處理。使用策略模式可以將不同的處理策略封裝成不同的策略類,并根據(jù)訂單類型選擇相應(yīng)的策略類來處理訂單。

  4. 數(shù)據(jù)加密:在數(shù)據(jù)加密系統(tǒng)中,不同的加密算法可能具有不同的安全性和性能。使用策略模式可以將不同的加密算法封裝成不同的策略類,用戶可以根據(jù)需要選擇不同的加密策略。

代碼實現(xiàn):

# 策略接口
class Strategy:
    def do_operation(self, num1, num2):
        pass

# 加法策略
class AddStrategy(Strategy):
    def do_operation(self, num1, num2):
        return num1 + num2

# 減法策略
class SubtractStrategy(Strategy):
    def do_operation(self, num1, num2):
        return num1 - num2

# 乘法策略
class MultiplyStrategy(Strategy):
    def do_operation(self, num1, num2):
        return num1 * num2

# 策略上下文
class Context:
    def __init__(self, strategy):
        self.strategy = strategy

    def execute_strategy(self, num1, num2):
        return self.strategy.do_operation(num1, num2)

# 使用示例
if __name__ == '__main__':
    num1, num2 = 10, 5

    add_strategy = AddStrategy()
    context = Context(add_strategy)
    result = context.execute_strategy(num1, num2)
    print(f"num1 + num2 = {result}")

    subtract_strategy = SubtractStrategy()
    context = Context(subtract_strategy)
    result = context.execute_strategy(num1, num2)
    print(f"num1 - num2 = {result}")

    multiply_strategy = MultiplyStrategy()
    context = Context(multiply_strategy)
    result = context.execute_strategy(num1, num2)
    print(f"num1 * num2 = {result}")

在上述代碼中,我們定義了一個 Strategy 接口,該接口包含了一個 do_operation 方法,用于執(zhí)行算法。然后,我們分別定義了加法、減法和乘法三種算法,并且讓它們都實現(xiàn) Strategy 接口。

接下來,我們定義了一個 Context 類作為策略的上下文,它接受一個具體的策略對象,并在執(zhí)行 execute_strategy 方法時調(diào)用該策略對象的 do_operation 方法。

最后,在主程序中,我們分別使用加法、減法和乘法三種策略來執(zhí)行一些數(shù)學運算,并輸出運算結(jié)果。文章來源地址http://www.zghlxwxcb.cn/news/detail-401999.html

到了這里,關(guān)于【python設(shè)計模式】13、策略模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【設(shè)計模式】4、策略模式

    【設(shè)計模式】4、策略模式

    策略模式是一種行為設(shè)計模式,它能定義一系列算法,把每種算法分別放入獨立的類中,以是算法的對象能相互替換。 一天, 你打算為游客們創(chuàng)建一款導(dǎo)游程序。 該程序的核心功能是提供美觀的地圖, 以幫助用戶在任何城市中快速定位。 用戶期待的程序新功能是自動路線

    2024年02月20日
    瀏覽(23)
  • 設(shè)計模式-策略模式

    策略模式是一種行為型設(shè)計模式,它允許在運行時動態(tài)改變對象的行為。在策略模式中,算法被封裝在獨立的策略類中,使得它們可以互換使用。下面是一個簡單的例子: 假設(shè)我們有一個計算稅收的系統(tǒng),現(xiàn)在需要計算不同類型的商品的稅收,例如書籍、食品和服裝。每種商

    2024年02月15日
    瀏覽(25)
  • 設(shè)計模式:策略模式

    策略模式(Strategy Pattern)是一種行為型設(shè)計模式,它允許在運行時根據(jù)不同的情況選擇不同的算法或行為。策略模式通過將算法封裝成獨立的策略類,使得它們可以互相替換,而不影響客戶端的使用。 在策略模式中,有三個核心組件: 策略接口(Strategy Interface):定義了策

    2024年02月07日
    瀏覽(23)
  • 【設(shè)計模式】 策略模式

    策略模式 (Strategy Pattern)是一種行為型設(shè)計模式,它定義了一系列算法,將每個算法封裝起來,使它們可以相互替換,讓客戶端代碼和算法的具體實現(xiàn)解耦。這樣,客戶端可以根據(jù)不同的需求選擇不同的算法,而無需修改原有的代碼。 靈活性增強 :策略模式使得算法獨立于

    2024年02月14日
    瀏覽(37)
  • 設(shè)計模式之策略模式

    策略設(shè)計模式(Strategy Pattern)是一種行為設(shè)計模式,它允許在運行時選擇算法的行為。策略模式定義了一系列算法,并將每個算法封裝起來,使它們可以互相替換。這種模式使算法的變化獨立于使用算法的客戶端。 概念 在策略模式中,有以下幾個關(guān)鍵組成部分: 策略接口(

    2024年01月23日
    瀏覽(50)
  • 設(shè)計模式--策略模式

    設(shè)計模式--策略模式

    目錄 一.場景 1.1場景 2.2 何時使用 ?2.3個人理解 二. 業(yè)務(wù)場景練習 ?2.1業(yè)務(wù): 2.2具體實現(xiàn) 2.3思路? ?三.總結(jié) 3.1策略模式的特點: ?3.2策略模式優(yōu)點 3.3策略模式缺點 1.1場景 許多相關(guān)的類僅僅是行為有異,也就是說業(yè)務(wù)代碼需要根據(jù)場景不同,切換不同的實現(xiàn)邏輯 一個類定義了

    2024年02月13日
    瀏覽(26)
  • 設(shè)計模式——策略模式

    設(shè)計模式——策略模式

    定義: 該模式定義了一系列算法,并將每個算法封裝起來,使它們可以相互替換,且算法的變化不會影響使用算法的客戶。策略模式屬于對象行為模式,它通過對算法進行封裝,把便用算法的責任和算法的實現(xiàn)分割開來,并委派給不算法進象行管理。 主要角色如下: 示例: 假定現(xiàn)在需要

    2024年02月22日
    瀏覽(20)
  • 《設(shè)計模式》策略模式

    《設(shè)計模式》策略模式

    定義 : 又叫作 政策模式,將定義的一系列算法封裝起來,使得它們之間可以互相替換,從而讓算法的變化不影響到使用算法的用戶 。 屬于 行為型 模式。 策略模式的組成角色 : 環(huán)境類(Context) : 環(huán)境類是使用算法的角色 ,用來操作策略的上下文環(huán)境,屏蔽高層模塊(客戶

    2024年02月01日
    瀏覽(28)
  • 設(shè)計模式(13):模板方法模式

    實現(xiàn)一個功能時,整體步驟很固定,但是,某些部分易變。易變部分可以抽象出來,供子類實現(xiàn)。 非常繁瑣,各個框架,類庫中都有它的影子,比如常見的有: 數(shù)據(jù)庫訪問的封裝 Junit單元測試 servlet中關(guān)于doGet/doPost方法調(diào)用 spring框架中各種Template shire中權(quán)限認證和授權(quán)都用到

    2024年04月16日
    瀏覽(22)
  • 設(shè)計模式之策略模式講解

    設(shè)計模式之策略模式講解

    概念:定義一組算法,將每個算法都封裝起來,并且使它們之間可以互換。將每一個算法封裝到具有共同接口的獨立的類中,從而使得它們可以相互替換,使得算法可以在不影響客戶端的情況下發(fā)生變化。 抽象策略:對策略進行抽象,定義策略或算法的操作。 具體策略:實

    2024年04月13日
    瀏覽(11)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包