【发布时间】:2012-10-09 15:30:25
【问题描述】:
我正在开发一个应用程序并尝试遵循 Robert C. Martin 的 SOLID 原则。我正在使用命令模式,我想知道实现。在他在 C# 中的清洁代码和敏捷原则、模式和实践中的所有示例中,他的命令对象从不返回任何内容。他的命令界面是;
public interface Command
{
void Execute();
}
所有示例都是“AddEmployee”、“DelEmployee”、“EditEmployee”等。我是否有一个命令是“GetAllEmployees”,或者是否有一些其他特殊的“交互器”我会为此特定目的创建?我正在考虑处理该特定情况的一种方法是拥有两个接口,一个像上面那样的非通用接口,一个像这样的通用接口;
public interface Command<T>
{
T Execute();
}
我要问的是,这是否是这种模式的可接受实现,还是我们可以通过其他方式访问应用程序中的数据?
【问题讨论】:
-
看起来您正在尝试实现 CQS(命令和查询隔离)。命令永远不应该返回任何数据。对于查询,您有特定的查询对象。只需将
Command<T>重命名为Query<T>即可。
标签: c# design-patterns solid-principles