一、目的:
策略模式主要是用來封裝演算法的,當需要在不同時間應用不同的業務規則,就可以考慮使用策略模式處理這種變化的可能性。
二、策略模式的原理:
乙個父類,下面有幾個子類繼承父類實現多型
乙個策略類→在建構函式中傳參,直接判斷需要生成哪個子類;並且在另乙個方法中呼叫指定子類的方法(完成不同的演算法、業務規則……,這個方法對主程式無需知道)。
三、拿商場結賬時打折和滿增的例子來實現**:
1.商場結算的抽象類
public abstract class cashsuper
public abstract double getrealprice(double money);
}2.正常收費子類,繼承cashsuper類
public class cashnormal : cashsuper
public override double getrealprice(double money)
}
3.滿立減的結算類,繼承cashsuper類
public class cashreturn : cashsuper
public override double getrealprice(double money)
return result;}}
4.打折的類,繼承cashsuper類
public class cashrebate : cashsuper
public override double getrealprice(double money)
}
5.策略模式的核心類(結合簡單工廠模式生成不同的物件)
public class cashcontext
}
public double getrealmoney(double money)
}
主程式main裡面需要輸入的**:
private void btnok_click_1(object sender, eventargs e)
這裡主程式只需認識策略類context即可,連中間的方法要如何實現都不需要了解,對主程式都是封閉的。
策略模式其實跟簡單工廠模式差不多,只是把生產物件的類(createclass)改為了context策略類,並且在策略類中結合簡單工廠模式生成對應的物件,並呼叫不同物件的方法實現不同的演算法或業務規則(這種演算法或業務規則直接就在context類中呼叫了,主程式中根本不知道有這麼一件事件,封裝性比較好);使用策略模式在主程式中不像簡單工廠模式一樣需要認識兩個類,而只需認識乙個策略類即可,耦合性大大的提高。
透析設計模式中的 策略模式
一 目的 策略模式主要是用來封裝演算法的,當需要在不同時間應用不同的業務規則,就可以考慮使用策略模式處理這種變化的可能性。二 策略模式的原理 乙個父類,下面有幾個子類繼承父類實現多型 乙個策略類 在建構函式中傳參,直接判斷需要生成哪個子類 並且在另乙個方法中呼叫指定子類的方法 完成不同的演算法 業務...
ruby中的設計模式 策略模式
模板模式固然不錯,但其還是有一些缺陷的。比如其實現依賴於繼承並且缺足夠的靈活性。在這時候我們就需要找到乙個更加優化的解決方案 策略模式。下面是使用策略模式實現的report模板 1 策略1 2class htmlformatter 3def output report title,text 4 pu...
設計模式 策略設計模式
策略設計模式其實就是多型的使用,父類引用指向子類物件。策略模式的最大特點是使得演算法可以在不影響客戶端的情況下發生變化,從而改變不同的功能。策略模式的缺點其實也很明顯,在於策略模式把每一種具體的策略都封裝成乙個實現類,如果策略有很多的話,很顯然是實現類就會導致過多,顯得臃腫。案列 author de...