単位 (メートル、キログラム、ポンド、マイル、km/h など) を管理できる" MyUnits " アプリケーションがあります。モデルは複雑で、ユニットの互換性、操作、変換などをサポートしています。
「ユニット」を使用する必要がある別のアプリケーション ( MyApp ) があるので、「ユニット」アプリケーションを使用するようにします。
私が考えたのはUnitService
、 Unit DTO を消費して返す "Units" サービス (webservice) を持つことUnitDTO
です。
MyApp には、次のモデルがあります。
Operand
value: float
unit: UnitDTO
OperationAdd
operand1: Operand
operand2: Operand
execute()
問題: ではOperationAdd.execute()
、ユニットが互換性があることを確認する必要があります (たとえば)。
したがって、次のいずれかです。
UnitDTO
を呼び出すメソッドがありますUnitService::areCompatible
が、それは間違っています! DTO (データのみを含む必要があります) が、Web サービスである UnitService をどのように認識しているか! すべきではないOperationAdd.execute()
を呼び出しますUnitService::areCompatible
が、それは間違っています! OperationAdd (エンティティ) は、Web サービスである UnitService をどのように認識しているか! すべきではないまたは私は
OperationService
仕事をする(そしてそれはサービスを呼び出すことができる)を持っていますが、私のOperation
エンティティはデータコンテナのようなものであり、メソッドのないエンティティであり、それは実際にはDDDの目的ではありません
貧血のエンティティは必要ありませんが、サービスを使用するエンティティがある場合、どうすればよいですか?
そして: UnitDTO を VO として使用できると考えるのは間違っていますか?