Events 如何构造许多类似事件的方法?
我正在开发的一个系统的中心目标是变得有点太笨拙了。问题是,它可以通过许多不同的方式采取行动。你可以: 取消它 否认 丢弃它 卖掉它 分开 过期 ... 还有更多。 我正在考虑将这些类似事件的方法从类中分解出来,使其更通用一些,比如命令模式。但是大多数方法都有不同的参数,所以使用像Run或Execute这样的解决方案可能会有问题Events 如何构造许多类似事件的方法?,events,design-patterns,class-design,Events,Design Patterns,Class Design,我正在开发的一个系统的中心目标是变得有点太笨拙了。问题是,它可以通过许多不同的方式采取行动。你可以: 取消它 否认 丢弃它 卖掉它 分开 过期 ... 还有更多。 我正在考虑将这些类似事件的方法从类中分解出来,使其更通用一些,比如命令模式。但是大多数方法都有不同的参数,所以使用像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");
}
}
这是一种伪代码,您可能喜欢使用与您的编程框架相匹配的集合库。是的,我正在考虑。所以我最终会有很多小的不可变类做一件事?有什么优点/缺点吗?嗯,缺点是类爆炸的风险,优点是,每个类做一件事,维护起来会更容易。如果没有对系统的更多了解,很难判断命令模式是否存在需要注意的问题。