我如何處理枚舉而不使用開關或在C#語句?狀態處理的多態引用
對於實例
enum Pricemethod
{
Max,
Min,
Average
}
...我有一類文章
public class Article
{
private List<Double> _pricehistorie;
public List<Double> Pricehistorie
{
get { return _pricehistorie; }
set { _pricehistorie = value; }
}
public Pricemethod Pricemethod { get; set; }
public double Price
{
get {
switch (Pricemethod)
{
case Pricemethod.Average: return Average();
case Pricemethod.Max: return Max();
case Pricemethod.Min: return Min();
}
}
}
}
我想要避免switch語句,並使它通用。
對於特定的Pricemethod調用特定的計算並將其返回。
get { return CalculatedPrice(Pricemethod); }
這種模式是用在這裏,也許有人有一個很好的實現的想法。 已經搜索了狀態模式,但我不認爲這是正確的。實現它
價格應該是'decimal',不'double'。使用「double」來表示長度和質量等物理量;精確的小數量使用'decimal'。 –
您是否打算返回**可變**的價格集合?什麼是阻止您的方法的調用者在該清單上調用「清除」? –
那麼你用_strategy-pattern_標記了這個嗎?這幾乎是這裏的答案... –