上一小节已经通过自行实现Commands完成预期功能。但目前仍存在如下几点缺陷:
- 对应“加、减、乘、除”不同的操作,分别实现了PlusCommand、MinusCommand、MultiplicationCommand、DivisionCommand。而这四种操作对应的代码大体相同。
- xxxCommand与CaculatorVM耦合度高,比如修改了CaculatorVM中的Add方法,则要去修改PlusCommand内Execute方法。
可以通过内置委托(Predicate、Action、Func)进行实现。
1. 实现通用Command(命名RelayCommand)
2. 修改CaculatorVM中相应xxxCommand属性
public ICommand AddCommand
{
get
{
return new RelayCommand(Add);
}
}