0

私はCreditCardPaymentコンテキストに取り組んでいますが、一部のコンテキストメソッドにすべてのロールが必要なわけではないというこの可能性を発見しました。たとえば、メソッドにCreateSecurityHashはすべての役割が必要な場合がありますが、VerifyHash必要なのは1つだけです。すべての役割をバインドしなくても大丈夫ですか?もしそうなら、複数のコンストラクターを導入し、次のように必要なものだけをバインドするのはどうですか?

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

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

これを行うときにどのコンテキストメソッドを呼び出すことができるかを知ることは難しいと感じます。だから私は知りたいです:

  • これはまだ大丈夫ですか(もしそうなら、なぜですか?)、または
  • シナリオ全体は、別のコンテキストが必要であることを示していますか、それとも
  • コンテキストを維持し、役割に必要なすべてのオブジェクトを常に提供する必要がありますか?
4

1 に答える 1

2

すべての役割を拘束したくない場合は、いくつか質問をして自分自身に尋ねてください。あなたはすでにそれらの1つに「2つのコンテキストを作成する必要がありますか?」と尋ねました。その質問に答えるために、私は文脈を穴として見ます。実際に1つのプロセスをモデル化する場合は、それを複数に分割しないでください。エンドユーザーのメンタルモデルをモデル化したいと考えています。そのモデルが複雑な場合、それを変更するためにできることは何もありませんが、それを反映することで支援できます。

特定のケースでは、実際に1つのプロセスをモデル化しているように見えます。その場合、コンテキストを1つとして保持する必要があります。役割を一度結合し、その時点から、インタラクションを使用して安全に呼び出すことができることを知ってください。

役割を拘束しないと、コードを不必要に推論するのが難しくなります。「このメソッドを呼び出しても安全ですか?」どのロールがバインドされているかを確認できる場合にのみ、実行時にそれに答えることができます。すべての役割は常に同時にバインドされます。これは、インタラクションの前に発生するか、インタラクションの最初の部分です。

于 2012-12-23T10:14:40.050 に答える