【发布时间】:2020-07-05 08:48:08
【问题描述】:
我已经根据下面的 UML 实现了命令设计模式
Command 是一个名为 ICommand 的接口:
public interface ICommand
{
CommandType CommandType { get; set; }
Task Execute();
}
这是完美的设计,直到我被要求从 Task Execute(); 返回值以获取特定的具体命令,所以我想“好的,让我们添加一个新方法 Task<T> Execute<T>();”但这意味着我需要添加空实现所有实现ICommand接口的类(大约10个类)。
我希望 ConcreteCommand 只有一个 Execute 方法,这可能吗?
每个 ConcreteCommand 是否必须对其他方法有空实现?
有没有办法使用 Task 将这些方法组合成一个?
为了澄清起见,我不希望有两种这样的方法:
public interface ICommand
{
CommandType CommandType { get; set; }
Task Execute();
Task<T> Execute<T>();
}
谢谢!
【问题讨论】:
标签: c# design-patterns