23种设计模式C++源码与UML实现--策略模式
生活随笔
收集整理的這篇文章主要介紹了
23种设计模式C++源码与UML实现--策略模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
策略模式
Strategy模式也叫策略模式,是行為模式之一,它對一系列的算法加以封裝,為所有算法定義一個抽象算法接口,并通過繼承該抽象算法接口對所有的算法加以封裝和實現,具體的算法選擇交給客戶端決定。strategy模式主要用來平滑地處理算法切換。
策略模式實現的關鍵就是將算法的邏輯抽象接口封裝到一個類中,在通過委托的方式將具體的算法實現委托給具體的Strategy類來實現
Strategy
策略(算法)抽象
ConcreteStrategy
各種策略(算法)的具體實現
Context
策略的外部封裝類,或者說策略的容器類。根據不同策略執行不同的行為。策略由外部環境決定。
適用于:準備一組算法,并將每一個算法都封裝起來,使得它們可以互換。
策略模式優缺點
它的優點有:
恰當使用繼承可以把公共的代碼移到父類里面,從而避免重復的代碼。
策略模式,那么使用算法或行為的環境類就可能會有一些子類,每一個子類提供一個不同
的算法或行為。但是,這樣一來算法或行為的使用者就和算法或行為本身混在一起。決定
使用哪一種算法或采取哪一種行為的邏輯就和算法或行為的邏輯混合在一起,從而不可能
再獨立演化。繼承使得動態改變算法或行為變得不可能。
種算法或采取哪一種行為的邏輯與算法或行為的邏輯混合在一起,統統列在一個多重轉移
語句里面,比使用繼承的辦法還要原始和落后。
策略模式的缺點有:
客戶端必須知道所有的策略類,并自行決定使用哪一個策略類。這就意味著客戶端必須
理解這些算法的區別,以便適時選擇恰當的算法類。換言之,策略模式只適用于客戶端知
道所有的算法或行為的情況。
策略模式造成很多的策略類。有時候可以通過把依賴于環境的狀態保存到客戶端里面,
而將策略類設計成可共享的,這樣策略類實例可以被不同客戶端使用。換言之,可以使用
享元模式來減少對象的數量
總結
以上是生活随笔為你收集整理的23种设计模式C++源码与UML实现--策略模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【计算机网络】TCP报文段结构
- 下一篇: s3c2440移植MQTT