私はDDDブック(Eric Evans)で、プレゼンテーションで使用する必要があるプロシージャをサービスクラスに移動する必要があることを読んでいます。たとえば、BankAccountManagementServiceにはChangeBankAccount、GetByAccountId ...メソッドがあります。ドメインオブジェクトカプセル化:静的メソッドとサービスクラス
しかし、他のビジネスオブジェクトからの割り当てを禁止するいくつかのプロパティのセッターをカプセル化する必要があります。 C#はフレンドリーなクラスを持たないため、サービスの場合にはこのタイプのカプセル化を使用することはできません。しかし、BankAccountビジネスオブジェクトの静的メソッドを使用してそれを行うことは可能です。
(1)上記の理由でサービスを使用する場合、どのようにこの制限を解決しますか?
編集:追加の質問
(2)なぜ静的メソッドの代わりのサービスを利用するために悪いのですか?私はエンティティコードとprocコードを混ぜないように別々の部分クラスファイルに置くことができます。事前に
感謝:)
答えていただきありがとうございます。しかし、なぜ問題なくサービスの代わりに静的メソッドを使用しないのですか? – Danil
静的コメントを反映するように編集された回答 – TimC
@Danil:私が与えた例はこれでした。 BankServiceクラスがあるとします。それはあなたが銀行口座を操作するために必要なすべての方法を持っています。国によって異なる方法が必要な場合はどうなりますか?メソッド名は同じでも構いませんが、そのプロセスは若干異なる場合があります。これは、異なるインスタンスを持つというアイデアがそれ自体を正当化するところです。 2つ以上のインスタンスを持つと、同じプレースホルダ(通常はインターフェイス)を維持しながらサービスをスワップすることができます。静的でこれを行うことは実用的ではありません。実際、静的メソッドはユーティリティクラスに限定する必要があります。 –