好的,在DCI上下文中有未绑定的角色?

时间:2012-12-22 17:30:33

标签: dci

我正在研究CreditCardPayment上下文,并发现这种可能性并非一些上下文方法都需要所有角色。例如,方法CreateSecurityHash可能需要所有角色,但VerifyHash只需要一个角色。是不是可以绑定所有角色?如果是这样,那么引入多个构造函数并仅绑定所需的内容,如下所示:

public CreditCardPayment(objectA, objectB, objectC)
{
  BindRoles(objectA, objectB, objectC)
}

public CreditCardPayment(objectA)
{
  BindRoles(objectA, null, null)
}

虽然知道在执行此操作时允许调用哪些上下文方法感觉很困难。所以我想知道:

  • 这仍然可以(如果是,为什么?)或
  • 整个场景是否需要另一个上下文,或
  • 我应该保留上下文并提供角色所需的所有对象吗?

1 个答案:

答案 0 :(得分:1)

如果你觉得自己没有约束所有角色,那么你应该去问自己一些问题。你已经问过其中一个“我应该创建两个上下文吗?”为了回答这个问题,我将上下文视为一个漏洞。如果它确实模拟了一个过程,那么不要把它分成几个。我们希望为最终用户心理模型建模。如果那个模型很复杂,我们无法改变它,但我们可以通过反映它来提供帮助。

在您的特定情况下,您似乎确实在建模一个过程,在这种情况下,您应该将上下文保持为一个。稍微提出角色,并知道从那时起你可以安全地使用互动。

不绑定角色会导致无法解释的代码。 “称这种方法可以安全吗?”只有在您可以看到绑定了哪些角色时,您才能在运行时回答这个问题。在交互之前发生的所有角色总是同时绑定,或者是交互的第一部分