策略模式意圖將解決問題的演算法分別封裝成乙個個物件的形式,並使這些演算法物件相互間可被替換。模式比較簡單,對於策略物件結構的設計,可抽象乙個抽象基類,並定義好相關演算法(純)虛介面,並由各種具體的實現算法子類實現即可。因此模式的類關係結構圖參考如下:
strategy模式編碼結構參考
策略模式主要是在當乙個問題的解存在不止一種方案並且這些解有可能隨時被替換相互替換的情況下使用。如遊戲中的角色的目標選擇方案就可考慮使用策略模式。如遊戲中的角色技能也可考慮使用策略模式,同一角色當前正在使用普通技能,過會就可能使用法術技能等等。在這些情況下使用策略模式是挺方便的,比較後期想有了新的具體實現策略時,不需要對應用的邏輯結構進行調整,只需要新擴充套件乙個具體實現策略即可。
在編碼實現上,設計人員可能需要考慮資料資訊如何傳遞給對應的策略物件中,此時可能需要視具體的環境而定。一種可參考的方案可將策略所需的資料資訊騎過引數形式傳入。這種方案對於不同的具體實現策略物件來說,卻並不一定全都有用。甚至有時為了某個特別的具體實現策略物件來說,需要的引數很多,於是在抽象類上就將所有引數都列入。可實際上,這些引數中的絕對大多數卻有可能對其他的那些具體實現策略來說,是完全沒有用的。並且後期如果擴充套件新的實現策略的話,則有可能會影響整個策略類系的介面重新調整。第二種可參考的方案是直接將上下文物件作為引數傳入。該方案對於策略類系來說,結構比較穩定,並且任何乙個新的或舊的具體實現策略都可以取到它們自己所需要的資料資訊。但是這種情況下,勢必要求上下文物件必需開放過多的(甚至是)不必要的介面出來。這樣就無形當中破壞了封裝性。
22 行為型 策略模式 Strategy
實際專案 1 有各種鴨子,各個鴨子不同行為,顯示出來 2 商場打折 滿減 積分兌換等活動 基本介紹 1 策略模式 strategy 它定義了演算法家族,分別封裝起來,讓它們之間可以互相替換,此模式讓演算法的變化,不會影響到使用演算法的客戶。2 這演算法體現了幾個設計原則 原理類圖 descripti...
策略模式 Strategy 行為筆記
一 涉及角色 1 環境角色 context 持有strategy類 抽象演算法類 引用 2 抽象策略 strategy 介面 or 抽象類 3 具體策略 concretestrategy 包裝相關演算法或行為 注意 共用 公共行為 可以 上移到 strategy 抽象類 二 何時 使用 何種 具體策...
Strategy策略(行為型模式)
演算法與物件的耦合 物件可能經常需要使用多種不同的演算法,但是如果變化頻繁,會將型別變得脆弱.動機在軟體構建過程中,某些物件使用的演算法可能多種多樣,經常改變,如果將這些演算法都編碼到物件中,將會使得物件變得異常複雜 而且有時候支援不使用的演算法是乙個效能負擔。如何在執行時根據需要透明地更改物件的演...