可以在DCI上下文中拥有未绑定的角色



我正在处理一个CreditCardPayment上下文,并且发现某些上下文方法可能不需要所有角色。例如,方法CreateSecurityHash可能需要所有角色,但VerifyHash只需要一个角色。不绑定所有角色可以吗?如果是这样,不如引入多个构造函数,只绑定需要的,像这样:

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

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

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

如果你不想绑定所有角色,那么你应该去问自己一些问题。你已经问过他们中的一个"我应该创建两个上下文吗?"要回答这个问题,我会把上下文看作一个洞。如果它确实模拟了一个过程,那么就不要把它分成几个过程。我们希望对最终用户的心智模型进行建模。如果这个模型很复杂,我们无法改变它,但我们可以通过反映它来帮助它。

在你的特殊情况下,似乎你确实是建模一个过程,在这种情况下,你应该保持上下文为一个。绑定角色一次,并知道从那时起您可以安全地调用使用交互。

不绑定角色将导致代码不必要地难以推理。"调用这个方法安全吗?"只有在运行时看到绑定了哪些角色时才能回答这个问题。所有的角色总是在同一时间绑定在此发生在交互之前或者是交互的第一部分

相关内容

  • 没有找到相关文章

最新更新