最近,我发现自己按照以下模式实现代码:
public class SomeClass()
{
private T Execute<T>(Func<T> function)
{
// Do some common stuff for every function like logging and try-catch
function();
}
public Type1 Command1()
{
Execute<Type1>(() => funcForCommand1);
}
public Type2 Command2()
{
Execute<Type2>(() => funcForCommand2);
}
}
这只是CommandPattern的功能方法吗?根据情况,我有不同的版本?你可以通过让funcForCommandX
从定义ICommand
函数的某些Execute
继承来实现完全相同的东西,但是在很多情况下我更喜欢我的方式,因为大部分时间都是命令仅在代码中的一个位置使用,不需要暴露给其余代码。当然,如果在代码中的更多位置使用它,则应该实现真正的命令模式。
答案 0 :(得分:2)
这取决于您的需求。这就是我所能说的。
但我想声明这不是Command Pattern
,但可能是方法委派。
Command Pattern
主要关注方法/任务的执行。以下是此模式中Command
可以预期的标准行为:
当您在Command
中包装方法/任务实现时,您可以提供有关如何撤消/撤消已执行操作的实现。提供将当前执行附加到事务,宏记录,线程安全执行等的默认实现。
用你的方法你没有那个。在将每个任务/方法包装在Command
包装器中并提供上述行为之前,这并不容易实现。
请查看Wikipedia
文章,详细了解Command Pattern
。