このリンクでは、異なる通貨の資金を一緒に追加するための Money オブジェクトの関数について説明しています。
まず、Service Locator パターンを使用したくありません。私は現在、Money オブジェクト自体に変換を行わせないパターンを使用しています。異なる通貨を一緒に追加しようとすると、スローされます。
Money オブジェクト (つまり、MultiCurrencyAccount) を所有するオブジェクトで、Money の数学演算を処理します。私の問題は、現在 IMoneyConverter を MultiCurrencyAccount ドメイン オブジェクトに注入するコンストラクターであることです。IMoneyConverter は実際には IForeignExchangeService を使用するサービスであるため、これは私には汚いと感じます (これは DB にヒットする可能性があります)。抽象化を扱っているので、実装を気にする必要がないことはわかっていますが、奇妙に感じます。
私がベースから外れていて、ドメインオブジェクトにサービスを注入することが「正しい」のか、それともよりエレガントな方法があるのか どうかはわかりません。