2

'したがって、このコンテキストでOrder.adjust()、呼び出しを委任するメソッドを作成しましたOrderAdjust Service。持つことは、調整操作を自分のものOrder.adjust()にするという利点があります。Order

これはどのように行われますか?ドメイン サービスは注入されていますか?

$order = new Order();
$order->adjust(???);

ステートレスの場合、ドメイン サービスはドメイン エンティティに対してどのように操作を行うことができますか? ドメイン サービスがエンティティに注入された場合、メソッドは参照に対してのみ呼び出すことができるため、状態が存在する必要がありますか?

$service = DomainService();

$entity = DomainEntity();
$entity->operation($service);

// Inside DomainEntity
public function operation(DomainService &$service)
{
    // Operations are delegated to the domain service reference
    $service->operation();
    $service->operation2();
}

$another_entity = AnotherDomainEntity();

// What happened in the first object must be known here
// otherwise what's the point?
$another_entity->operation($service);

このように、またはアプリケーションサービスで行うべきではありませんか?

$domain_service = new DomainService();
$entity = new DomainEntity();
$another_entity = new AnotherDomainEntity();

$domain_service->performOperation($entity, $another_entity);

ドメインエンティティ/オブジェクト間の操作はどのように行われますか? 一般に、ドメイン オブジェクトはどのように通信しますか? それらはどこでインスタンス化されますか?

コード例は大歓迎です。

ソース: http://stochastyk.blogspot.no/2008/05/domain-services-in-domain-driven-design.html

4

1 に答える 1

1

質問は次のようなものです: https://softwareengineering.stackexchange.com/a/62193/19252

あなたが参照したブログ投稿は、あなたの質問にうまく対応しています。簡潔に言うと、モデルで実行できる場合 (および単体テスト!) は、そこで実行してください。ドメイン サービスは、ルールというより例外です。

その投稿を引用させてください:

"- サービスは悪くないので、OO に従ってすべてのオブジェクトを使用するべきではありませんか?

はい、サービスはオブジェクト指向設計と直交する傾向があります。[...] モデルの世界では、過剰な数のサービスを使用する大きな傾向があります」

私の場合、この傾向は、ビジネス ロジックをセッター メソッドに入れることができないなど、.NET/Java 永続化アーキテクチャの欠陥に起因しています。

于 2012-06-19T06:56:08.737 に答える