我正在開發的系統的核心目標是太笨重了。問題在於它可以通過許多不同的方式採取行動。您可以:如何構造許多類似事件的方法?
- 取消它
- 否認
- 丟棄
- 賣它
- 拆分它
- 到期。
- ...,還有更多。
我正在考慮把那些類事件的方法從類中分解出來,並使它更通用一些,就像命令模式一樣。但大多數方法有不同的參數,所以使用像Run()
或Execute()
這樣的解決方案可能會成爲一個問題?
任何想法如何構造這個,使其靈活和簡單的添加新的命令,或行動或你想要稱之爲什麼? (因爲沒有聽衆,所以我不會稱它們爲真實事件)。
我正在開發的系統的核心目標是太笨重了。問題在於它可以通過許多不同的方式採取行動。您可以:如何構造許多類似事件的方法?
我正在考慮把那些類事件的方法從類中分解出來,並使它更通用一些,就像命令模式一樣。但大多數方法有不同的參數,所以使用像Run()
或Execute()
這樣的解決方案可能會成爲一個問題?
任何想法如何構造這個,使其靈活和簡單的添加新的命令,或行動或你想要稱之爲什麼? (因爲沒有聽衆,所以我不會稱它們爲真實事件)。
你能在你的構造函數中傳遞你的命令所需的參數嗎?這樣,你可以有一個無參數的命令。
class SellItCommand : ICommand {
private decimal price;
SellItCommand(decimal price) {
this.price = price;
}
void Execute() {
// Do whatever needs to be done with in the sell command using this.price
}
}
封裝參數,作爲單個參數:
public class SellCommand: Command {
Product OwnerProduct;
ProductCommand (AOwnerProduct)
{
this.OwnerProduct = AOwnerProduct;
}
public override void Execute(KeyValueArray Parameters)
{
double Price = (double)Parameters.ValueofKey("price");
// do something else
}
}
public class BuyCommand: Command {
Product OwnerProduct;
ProductCommand (AOwnerProduct)
{
this.OwnerProduct = AOwnerProduct;
}
public override void Execute(KeyValueArray Parameters)
{
double Cost = (double)Parameters.ValueofKey("cost");
// do something else
}
}
public class Product {
public void AnyMethod()
{
KeyValueArray Parameters = new KeyValueArray Parameters();
KeyValueArray.Add("price", "12.5");
}
}
其僞的排序,你可能想使用符合您的編程框架,集合庫。
是的,我在考慮這個。所以我最終會得到很多小的不可變類做一件事情?任何優點/缺點與此? – ciscoheat 2011-06-16 20:06:00
好吧,缺點是有爆炸和專業的風險,每個班級做一件事情,維護起來會更容易。如果沒有更多關於系統的知識,很難判斷是否有任何需要注意的命令模式。 – Martin 2011-06-16 20:34:32