我正在开发的系统的核心对象变得有点过于笨拙。问题在于它可以通过许多不同的方式起作用。你可以:
我正在考虑将类似事件的方法从类中分解出来并使它更通用,比如Command模式。但是大多数方法都有不同的参数,所以使用像Run()
或Execute()
这样的解决方案可能会成为一个问题吗?
任何想法如何构建它,使其更灵活,更简单地添加新命令,或操作或您想要调用它们? (因为没有听众,我不会称之为真实事件。)
答案 0 :(得分:0)
您可以在构造函数中传递命令所需的参数吗?这样,您可以使用无参数命令。
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
}
}
答案 1 :(得分:0)
将参数封装为一个参数:
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");
}
}
它的伪代码,您可能希望使用与您的编程框架相匹配的集合库。