欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python設(shè)計(jì)模式中的行為型策略模式

 更新時(shí)間:2022年02月15日 09:58:42   作者:范桂颶  
這篇文章主要介紹了Python設(shè)計(jì)模式中的行為型策略模式,策略模式即Strategy?Pattern,其定義了算法家族,分別封裝起來,讓他們之間可以相互替換,此模式讓算法的變化,不會(huì)影響到使用算法的客戶,下文相關(guān)資料具有一點(diǎn)的參考價(jià)值,需要的小伙伴可以參考一下

一、策略模式

策略模式中,首先定義了一系列不同的算法,并把它們一一封裝起來,然后在策略類中,使這些算法可以相互替換。這意味著,讓一個(gè)類的行為(算法)可以在類的實(shí)例化對(duì)象運(yùn)行時(shí)進(jìn)行更改。

優(yōu)點(diǎn):

  • 定義了一系列可重用的算法和行為。
  • 消除了一些條件語句。
  • 可以提供相同行為的不同實(shí)現(xiàn)。

缺點(diǎn):

  • Client 必須了解不同的策略行為細(xì)節(jié)。

二、應(yīng)用場(chǎng)景

根據(jù)不同的客戶屬性,采用不同的折扣策略來計(jì)算訂單中的商品價(jià)格:

  • 有 1000 或以上積分的客戶,每個(gè)訂單享 5% 折扣。
  • 同一訂單中,單個(gè)商品的數(shù)量達(dá)到 20 個(gè)或以上,享 10% 折扣。
  • 訂單中的不同商品達(dá)到 10 個(gè)或以上,享 7% 折扣。

三、代碼示例

實(shí)體角色:

  • 上下文(Context):集成了算法的類。
  • 抽象策略(Strategy):實(shí)現(xiàn)不同算法的組件的共同接口。
  • 具體策略(Concrete Strategy):抽象策略的具體子類。
import abc

# 抽象策略
class Strategy(metaclass=abc.ABCMeta):
? ? @abc.abstractmethod
? ? def execute(self, data):
? ? ? ? pass

# 具體策略 1
class Strategy1(Strategy):
? ? def execute(self, data):
? ? ? ? print(f"使用策略1執(zhí)行{data}")

# 具體策略2?
class Strategy2(Strategy):
? ? def execute(self, data):
? ? ? ? print(f"使用策略2執(zhí)行{data}")

# 上下文
class Context:
? ? def __init__(self, data):
? ? ? ? self.strategy = None
? ? ? ? self.data = data

? ? def set_strategy(self, strategy):
? ? ? ? self.strategy = strategy

? ? def do_strategy(self):
? ? ? ? if self.strategy:
? ? ? ? ? ? self.strategy.execute(self.data)
? ? ? ? else:
? ? ? ? ? ? print("請(qǐng)先配置策略!")


if __name__ == "__main__":
? ? data = "測(cè)試數(shù)據(jù)"
? ? s1 = Strategy1()
? ? s2 = Strategy2()
? ? context = Context(data)
? ? context.set_strategy(s1)
? ? context.do_strategy()
? ? context.set_strategy(s2)
? ? context.do_strategy()

到此這篇關(guān)于Python設(shè)計(jì)模式中的行為型策略模式的文章就介紹到這了,更多相關(guān)Python策略模式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python數(shù)據(jù)庫編程之pymysql詳解

    Python數(shù)據(jù)庫編程之pymysql詳解

    本文主要介紹了Python數(shù)據(jù)庫編程中pymysql,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • django redis的使用方法詳解

    django redis的使用方法詳解

    本文主要介紹了django redis的使用方法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Python小白學(xué)習(xí)爬蟲常用請(qǐng)求報(bào)頭

    Python小白學(xué)習(xí)爬蟲常用請(qǐng)求報(bào)頭

    在本篇文章里小編給大家整理了關(guān)于Python小白學(xué)習(xí)爬蟲常用請(qǐng)求報(bào)頭的相關(guān)知識(shí)點(diǎn),需要的朋友們可以學(xué)習(xí)下。
    2020-06-06
  • Python iter()函數(shù)用法實(shí)例分析

    Python iter()函數(shù)用法實(shí)例分析

    這篇文章主要介紹了Python iter()函數(shù)用法,結(jié)合實(shí)例形式詳細(xì)分析了Python iter()函數(shù)的功能、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2018-03-03
  • Pytorch實(shí)現(xiàn)網(wǎng)絡(luò)部分層的固定不進(jìn)行回傳更新問題及思路詳解

    Pytorch實(shí)現(xiàn)網(wǎng)絡(luò)部分層的固定不進(jìn)行回傳更新問題及思路詳解

    這篇文章主要介紹了Pytorch實(shí)現(xiàn)網(wǎng)絡(luò)部分層的固定不進(jìn)行回傳更新,實(shí)現(xiàn)思路就是利用tensor的requires_grad,每一個(gè)tensor都有自己的requires_grad成員,值只能為True和False,具體內(nèi)容詳情跟隨小編一起看看吧
    2021-08-08
  • 使用Python讀取Excel數(shù)據(jù)在PPT中創(chuàng)建圖表

    使用Python讀取Excel數(shù)據(jù)在PPT中創(chuàng)建圖表

    使用Python從Excel讀取數(shù)據(jù)并在PowerPoint幻燈片中創(chuàng)建圖表不僅能夠極大地簡(jiǎn)化圖表創(chuàng)建過程,通過Python這一橋梁,我們可以輕松實(shí)現(xiàn)數(shù)據(jù)自動(dòng)化處理和圖表生成,本文將演示如何使用Python讀取Excel數(shù)據(jù)在PPT中創(chuàng)建圖表,需要的朋友可以參考下
    2024-08-08
  • python自動(dòng)化測(cè)試selenium核心技術(shù)處理彈框

    python自動(dòng)化測(cè)試selenium核心技術(shù)處理彈框

    這篇文章主要為大家介紹了python自動(dòng)化測(cè)試selenium核心技術(shù)處理彈框的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • Python標(biāo)準(zhǔn)庫之time庫的使用教程詳解

    Python標(biāo)準(zhǔn)庫之time庫的使用教程詳解

    這篇文章主要介紹了Python的time庫的使用教程,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2022-04-04
  • Python 捕獲代碼中所有異常的方法

    Python 捕獲代碼中所有異常的方法

    這篇文章主要介紹了Python 捕獲代碼中所有異常的方法,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • Python算法輸出1-9數(shù)組形成的結(jié)果為100的所有運(yùn)算式

    Python算法輸出1-9數(shù)組形成的結(jié)果為100的所有運(yùn)算式

    這篇文章主要介紹了Python算法輸出1-9數(shù)組形成的結(jié)果為100的所有運(yùn)算式,然后介紹了另外一個(gè)相關(guān)實(shí)例,具體內(nèi)容請(qǐng)參閱正文,需要的朋友可以參考下。
    2017-11-11

最新評(píng)論