【问题标题】:Command Pattern use for Returning Data用于返回数据的命令模式
【发布时间】: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&lt;T&gt; 重命名为 Query&lt;T&gt; 即可。

标签: c# design-patterns solid-principles


【解决方案1】:

命令是改变状态(更新、删除或添加)的东西。

在获取数据(而不是更改数据)时,您将使用 查询

另请参阅CQS 和相关的CQRS

【讨论】:

  • 我认为在这里引入 CQRS 会引起很多混乱。
猜你喜欢
  • 2010-11-12
  • 1970-01-01
  • 2011-06-28
  • 2016-12-16
  • 1970-01-01
  • 2019-09-21
  • 2018-02-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多