最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一、策略模式

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

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

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

缺點(diǎn):

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

二、應(yī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("請先配置策略!")


if __name__ == "__main__":
? ? data = "測試數(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中scrapy下載保存圖片的示例

    Python中scrapy下載保存圖片的示例

    在日常爬蟲練習(xí)中,我們爬取到的數(shù)據(jù)需要進(jìn)行保存操作,在scrapy中我們可以使用ImagesPipeline這個(gè)類來進(jìn)行相關(guān)操作,本文主要介紹了scrapy下載保存圖片,感興趣的可以了解一下
    2021-07-07
  • Pytorch釋放顯存占用方式

    Pytorch釋放顯存占用方式

    今天小編就為大家分享一篇Pytorch釋放顯存占用方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • python字符串常用方法

    python字符串常用方法

    這篇文章主要介紹了python字符串常用方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-06-06
  • Python基礎(chǔ)教程之tcp socket編程詳解及簡單實(shí)例

    Python基礎(chǔ)教程之tcp socket編程詳解及簡單實(shí)例

    這篇文章主要介紹了Python基礎(chǔ)教程之tcp socket編程詳解及簡單實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 淺談python新式類和舊式類區(qū)別

    淺談python新式類和舊式類區(qū)別

    python的新式類是2.2版本引進(jìn)來的,我們可以將之前的類叫做經(jīng)典類或者舊式類。這篇文章主要介紹了淺談python新式類和舊式類區(qū)別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • python openpyxl模塊的使用詳解

    python openpyxl模塊的使用詳解

    這篇文章主要介紹了python openpyxl模塊的使用詳解,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-02-02
  • Python執(zhí)行時(shí)間的計(jì)算方法小結(jié)

    Python執(zhí)行時(shí)間的計(jì)算方法小結(jié)

    這篇文章主要介紹了Python執(zhí)行時(shí)間的計(jì)算方法小結(jié)的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • python中reader的next用法

    python中reader的next用法

    這篇文章主要介紹了python中reader的next用法,分別介紹了python3中的用法和python2中的用法,具體實(shí)例代碼大家參考下本文
    2018-07-07
  • Python -m參數(shù)原理及使用方法解析

    Python -m參數(shù)原理及使用方法解析

    這篇文章主要介紹了Python -m參數(shù)原理及使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • python networkx 包繪制復(fù)雜網(wǎng)絡(luò)關(guān)系圖的實(shí)現(xiàn)

    python networkx 包繪制復(fù)雜網(wǎng)絡(luò)關(guān)系圖的實(shí)現(xiàn)

    這篇文章主要介紹了python networkx 包繪制復(fù)雜網(wǎng)絡(luò)關(guān)系圖的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07

最新評論

多伦县| 于田县| 娱乐| 成武县| 岗巴县| 湟源县| 赫章县| 盐池县| 新安县| 延庆县| 龙南县| 凤翔县| 襄樊市| 乐业县| 察隅县| 呼和浩特市| 灵石县| 高密市| 永平县| 沂南县| 许昌市| 芦溪县| 宾阳县| 南陵县| 太原市| 凤冈县| 进贤县| 无锡市| 城步| 岫岩| 印江| 怀柔区| 收藏| 安福县| 鸡东县| 宣威市| 连平县| 蓬莱市| 治多县| 大余县| 东兴市|