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

軟件設(shè)計模式與體系結(jié)構(gòu)-設(shè)計模式-行為型軟件設(shè)計模式-策略模式

這篇具有很好參考價值的文章主要介紹了軟件設(shè)計模式與體系結(jié)構(gòu)-設(shè)計模式-行為型軟件設(shè)計模式-策略模式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

四、策略模式

軟件設(shè)計模式與體系結(jié)構(gòu)-設(shè)計模式-行為型軟件設(shè)計模式-策略模式,軟件設(shè)計模式與體系結(jié)構(gòu),設(shè)計模式,策略模式
軟件設(shè)計模式與體系結(jié)構(gòu)-設(shè)計模式-行為型軟件設(shè)計模式-策略模式,軟件設(shè)計模式與體系結(jié)構(gòu),設(shè)計模式,策略模式

類圖

軟件設(shè)計模式與體系結(jié)構(gòu)-設(shè)計模式-行為型軟件設(shè)計模式-策略模式,軟件設(shè)計模式與體系結(jié)構(gòu),設(shè)計模式,策略模式

代碼

策略模式(Strategy Pattern)是一種行為型設(shè)計模式,它定義了一系列算法,并將每個算法封裝在獨(dú)立的類中,使它們可以相互替換。策略模式使得算法可以獨(dú)立于使用它們的客戶端而變化。

下面是一個使用策略模式的簡單代碼示例,以解釋其工作原理:

# 定義策略接口
class Strategy:
    def execute(self):
        pass

# 具體策略類A
class ConcreteStrategyA(Strategy):
    def execute(self):
        print("Executing strategy A")

# 具體策略類B
class ConcreteStrategyB(Strategy):
    def execute(self):
        print("Executing strategy B")

# 上下文類
class Context:
    def __init__(self, strategy):
        self._strategy = strategy
    
    def set_strategy(self, strategy):
        self._strategy = strategy
    
    def execute_strategy(self):
        self._strategy.execute()

# 示例代碼
# 創(chuàng)建具體策略對象
strategyA = ConcreteStrategyA()
strategyB = ConcreteStrategyB()

# 創(chuàng)建上下文對象并設(shè)置具體策略對象A
context = Context(strategyA)

# 執(zhí)行策略
context.execute_strategy()  # 輸出:Executing strategy A

# 切換策略為具體策略對象B
context.set_strategy(strategyB)
context.execute_strategy()  # 輸出:Executing strategy B

在上述示例中,策略模式包含以下幾個角色:

  • Strategy:策略接口,定義了具體策略類需要實現(xiàn)的方法。
  • ConcreteStrategyAConcreteStrategyB:具體策略類,實現(xiàn)了策略接口的方法,并提供不同的算法實現(xiàn)。
  • Context:上下文類,維護(hù)一個對策略對象的引用,并提供方法來設(shè)置和執(zhí)行策略。

在示例中,我們創(chuàng)建了兩個具體策略類ConcreteStrategyAConcreteStrategyB,它們分別實現(xiàn)了策略接口Strategy中的execute方法。Context類作為上下文對象,可以設(shè)置具體的策略對象,并通過execute_strategy方法執(zhí)行策略。

在運(yùn)行時,我們可以通過設(shè)置不同的策略對象來改變上下文對象的行為。通過調(diào)用execute_strategy方法,上下文對象會委派調(diào)用具體策略對象的執(zhí)行方法。

策略模式的優(yōu)勢在于可以在運(yùn)行時動態(tài)地改變算法的行為,而不需要修改客戶端的代碼。這種靈活性使得策略模式在許多場景下都有很好的應(yīng)用,特別是當(dāng)需要根據(jù)不同的情況選擇不同的算法時,策略模式可以提供一種簡潔、可擴(kuò)展和易維護(hù)的解決方案。

實例

軟件設(shè)計模式與體系結(jié)構(gòu)-設(shè)計模式-行為型軟件設(shè)計模式-策略模式,軟件設(shè)計模式與體系結(jié)構(gòu),設(shè)計模式,策略模式
軟件設(shè)計模式與體系結(jié)構(gòu)-設(shè)計模式-行為型軟件設(shè)計模式-策略模式,軟件設(shè)計模式與體系結(jié)構(gòu),設(shè)計模式,策略模式

使用策略模式對中國的十二屬相(Chinese Zodiac)設(shè)計查詢系統(tǒng)。

軟件設(shè)計模式與體系結(jié)構(gòu)-設(shè)計模式-行為型軟件設(shè)計模式-策略模式,軟件設(shè)計模式與體系結(jié)構(gòu),設(shè)計模式,策略模式
軟件設(shè)計模式與體系結(jié)構(gòu)-設(shè)計模式-行為型軟件設(shè)計模式-策略模式,軟件設(shè)計模式與體系結(jié)構(gòu),設(shè)計模式,策略模式

策略模式與狀態(tài)模式

軟件設(shè)計模式與體系結(jié)構(gòu)-設(shè)計模式-行為型軟件設(shè)計模式-策略模式,軟件設(shè)計模式與體系結(jié)構(gòu),設(shè)計模式,策略模式
軟件設(shè)計模式與體系結(jié)構(gòu)-設(shè)計模式-行為型軟件設(shè)計模式-策略模式,軟件設(shè)計模式與體系結(jié)構(gòu),設(shè)計模式,策略模式
策略模式(Strategy Pattern)和狀態(tài)模式(State Pattern)是兩種不同的行為型設(shè)計模式,它們都用于解決對象行為的變化和動態(tài)切換的問題,但在實現(xiàn)方式和應(yīng)用場景上存在一些差異。

  • 策略模式關(guān)注的是不同算法或策略的替換和選擇,它將每個策略封裝在獨(dú)立的類中,并使得這些策略對象可以相互替換,從而使得客戶端可以在運(yùn)行時選擇不同的策略對象。策略模式通過封裝不同的算法,使得算法可以獨(dú)立于使用它們的客戶端而變化。在策略模式中,客戶端決定使用哪個策略,然后將控制權(quán)交給相應(yīng)的策略對象。

  • 狀態(tài)模式關(guān)注的是對象的狀態(tài)變化,并在不同狀態(tài)下提供不同的行為。它通過將對象的狀態(tài)封裝在獨(dú)立的狀態(tài)類中,并使得狀態(tài)對象可以相互切換,從而實現(xiàn)不同狀態(tài)下的不同行為。狀態(tài)模式的關(guān)鍵在于將狀態(tài)的切換和行為的實現(xiàn)分離開來,從而使得客戶端可以根據(jù)對象的狀態(tài)來選擇相應(yīng)的行為。在狀態(tài)模式中,狀態(tài)的切換是由上下文對象來控制的,上下文對象根據(jù)當(dāng)前的狀態(tài)選擇相應(yīng)的行為。

  • 雖然策略模式和狀態(tài)模式都涉及到對象行為的變化和動態(tài)切換,但它們的重點和應(yīng)用場景有所不同。策略模式主要用于選擇和替換算法或策略,適用于需要在運(yùn)行時根據(jù)不同情況選擇不同算法的場景。而狀態(tài)模式主要用于管理對象的狀態(tài)變化和相應(yīng)的行為切換,適用于對象具有多個狀態(tài),且每個狀態(tài)下的行為有所不同的場景。

需要注意的是,策略模式和狀態(tài)模式都可以提高代碼的靈活性和可維護(hù)性,通過將變化的部分封裝起來,使得變化不會影響到其他部分的代碼。根據(jù)具體的需求和設(shè)計目標(biāo),選擇合適的設(shè)計模式來解決問題是很重要的。

課程作業(yè)

軟件設(shè)計模式與體系結(jié)構(gòu)-設(shè)計模式-行為型軟件設(shè)計模式-策略模式,軟件設(shè)計模式與體系結(jié)構(gòu),設(shè)計模式,策略模式
軟件設(shè)計模式與體系結(jié)構(gòu)-設(shè)計模式-行為型軟件設(shè)計模式-策略模式,軟件設(shè)計模式與體系結(jié)構(gòu),設(shè)計模式,策略模式
軟件設(shè)計模式與體系結(jié)構(gòu)-設(shè)計模式-行為型軟件設(shè)計模式-策略模式,軟件設(shè)計模式與體系結(jié)構(gòu),設(shè)計模式,策略模式
軟件設(shè)計模式與體系結(jié)構(gòu)-設(shè)計模式-行為型軟件設(shè)計模式-策略模式,軟件設(shè)計模式與體系結(jié)構(gòu),設(shè)計模式,策略模式文章來源地址http://www.zghlxwxcb.cn/news/detail-541473.html

到了這里,關(guān)于軟件設(shè)計模式與體系結(jié)構(gòu)-設(shè)計模式-行為型軟件設(shè)計模式-策略模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 中級軟件設(shè)計師備考---計算機(jī)組成與體系結(jié)構(gòu)3

    中級軟件設(shè)計師備考---計算機(jī)組成與體系結(jié)構(gòu)3

    計算題 概念題 計算可靠度 碼距:是指兩個碼字之間的不同位數(shù)。例如,1010和1111之間的碼距是2,因為它們在第二位和第三位上不同。在信息傳輸中,碼距越大,就越容易檢測和糾正錯誤。 在一個碼組內(nèi)為了檢測e個誤碼,要求最小碼距d應(yīng)滿足:d=e+1 在一個碼組內(nèi)為了糾正

    2023年04月15日
    瀏覽(16)
  • 【軟件設(shè)計師暴擊考點】計算機(jī)組成原理與體系結(jié)構(gòu)高頻考點暴擊系列【一】

    【軟件設(shè)計師暴擊考點】計算機(jī)組成原理與體系結(jié)構(gòu)高頻考點暴擊系列【一】

    ?????個人主頁 :@元宇宙-秩沅 ????? hallo 歡迎 點贊?? 收藏? 留言?? 加關(guān)注?! ????? 本文由 秩沅 原創(chuàng) ????? 收錄于專欄 : 軟件設(shè)計師考點暴擊 下午題 ?【軟件設(shè)計師暴擊考點】下午題高頻考點暴擊系列 上午題目錄 進(jìn)入專欄瀏覽:

    2024年02月10日
    瀏覽(24)
  • 軟件工程(十五) 行為型設(shè)計模式(一)

    軟件工程(十五) 行為型設(shè)計模式(一)

    簡要說明 通過多個對象處理的請求,減少請求的發(fā)送者與接收者之間的耦合。將接受對象 鏈接 起來,在鏈中傳遞請求,直到有一個對象處理這個請求。 速記 傳遞職責(zé) 類圖如下 由類圖可以比較容易的看出來,其實就是自己關(guān)聯(lián)自己,形成了一個鏈,并且自己有不同的

    2024年02月11日
    瀏覽(25)
  • 軟件工程(十八) 行為型設(shè)計模式(四)

    軟件工程(十八) 行為型設(shè)計模式(四)

    簡要說明 允許一個對象在其內(nèi)部改變時改變它的行為 速記 狀態(tài)變成類 類圖如下 狀態(tài)模式主要用來解決對象在多種狀態(tài)轉(zhuǎn)換時,需要對外輸出不同的行為的問題。比如訂單從待付款到待收貨的咋黃臺發(fā)生變化,執(zhí)行的邏輯是不一樣的。 所以我們將狀態(tài)抽象為一個接口

    2024年02月11日
    瀏覽(20)
  • 軟件工程(十七) 行為型設(shè)計模式(三)

    軟件工程(十七) 行為型設(shè)計模式(三)

    簡要說明 定義對象間的一種一對多的依賴關(guān)系,當(dāng)一個對象的狀態(tài)發(fā)生改變時,所有依賴于它的對象都得到通知并自動更新 速記 聯(lián)動,廣播消息 類圖如下 基于上面的類圖,我們來實現(xiàn)一個監(jiān)聽器。類圖中的Subject對應(yīng)我們的被觀察對象接口(IObservable),Observer對應(yīng)我們

    2024年02月11日
    瀏覽(17)
  • C++面試:單例模式、工廠模式等簡單的設(shè)計模式 & 創(chuàng)建型、結(jié)構(gòu)型、行為型設(shè)計模式的應(yīng)用技巧

    ????????理解和能夠?qū)崿F(xiàn)基本的設(shè)計模式是非常重要的。這里,我們將探討兩種常見的設(shè)計模式:單例模式和工廠模式,并提供一些面試準(zhǔn)備的建議。 目錄 單例模式 (Singleton Pattern) 工廠模式 (Factory Pattern) 面試準(zhǔn)備? 1. 理解設(shè)計模式的基本概念 2. 掌握實現(xiàn)細(xì)節(jié) 3. 討論優(yōu)缺

    2024年02月01日
    瀏覽(20)
  • 基于體系結(jié)構(gòu)架構(gòu)設(shè)計-架構(gòu)真題(十五)

    基于體系結(jié)構(gòu)開發(fā)設(shè)計(Architecture-Base Software Design)ABSD,是指構(gòu)成體系結(jié)構(gòu)的()組合驅(qū)動,ABSC方法是一個自項向下、遞歸細(xì)化的方法,軟件系統(tǒng)的體系結(jié)構(gòu)通過該方法細(xì)化,直到能產(chǎn)生()。 產(chǎn)品、功能需求和設(shè)計活動 商業(yè)、質(zhì)量和功能需求 商業(yè)、產(chǎn)品和功能需求 商業(yè)

    2024年02月10日
    瀏覽(44)
  • 軟件工程(十三) 設(shè)計模式之結(jié)構(gòu)型設(shè)計模式(一)

    軟件工程(十三) 設(shè)計模式之結(jié)構(gòu)型設(shè)計模式(一)

    前面我們記錄了創(chuàng)建型設(shè)計模式,知道了通過各種模式去創(chuàng)建和管理我們的對象。但是除了對象的創(chuàng)建,我們還有一些結(jié)構(gòu)型的模式。 簡要說明 將一個類的接口轉(zhuǎn)換為用戶希望得到的另一個接口。它使原本不相同的接口得以協(xié)同工作。 速記 轉(zhuǎn)換接口 類圖如下 角色說

    2024年02月11日
    瀏覽(30)
  • 軟件設(shè)計實驗三 結(jié)構(gòu)型設(shè)計模式實驗

    軟件設(shè)計實驗三 結(jié)構(gòu)型設(shè)計模式實驗

    1.結(jié)合實例,熟練繪制常見的結(jié)構(gòu)型設(shè)計模式結(jié)構(gòu)圖。 2.結(jié)合實例,熟練使用任意一種面向?qū)ο缶幊陶Z言實現(xiàn)常見的結(jié)構(gòu)型設(shè)計模式。 3.通過本實驗,理解每一種結(jié)構(gòu)型設(shè)計模式的模式動機(jī),掌握模式結(jié)構(gòu),學(xué)習(xí)如何使用代碼實現(xiàn)這些設(shè)計模式。 1.現(xiàn)有一個接口DataOperation定義

    2024年02月03日
    瀏覽(36)
  • 軟件工程(十四) 設(shè)計模式之結(jié)構(gòu)型模式(二)

    軟件工程(十四) 設(shè)計模式之結(jié)構(gòu)型模式(二)

    簡要說明 將對象組合成樹形結(jié)構(gòu)以表示“整體-部分”的層次結(jié)構(gòu),使得用戶對單個對象和組合對象的使用具有一致性。 速記 樹形目錄結(jié)構(gòu) 類圖如下 由類圖其實可以看出,組合模式就是將具有父子關(guān)系的結(jié)構(gòu),組裝形成一棵樹,并且根據(jù)規(guī)范,樹干節(jié)點和葉子節(jié)點均

    2024年02月11日
    瀏覽(26)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包