2

私は、Onion アーキテクチャ、Clean アーキテクチャ、Ports and Adapters などの名前を持つこの新しい種類のアーキテクチャを理解しようとしています。

ポートとアダプタを抽象化して、アプリケーションを特定のポートに適合させる場合、アプリケーション内からポートにエンティティを与えても問題ありませんか? または、ポートに合わせてエンティティも常に適応させる必要がありますか?

例:

Customer エンティティがあるとします。アプリケーションを使用する UI があります。私の UI は、Adapter を介して getCustomerById(123) を呼び出します。次に、アダプターがアプリケーションを呼び出し、注入されたリポジトリを使用して顧客を効果的に取得し、何らかのフォーマットとログを実行します。顧客の準備が整うと、UI に返されます。ここでの私の質問は、Customer オブジェクトがそのまま UI に返されるということです。これは、UI がコア プロジェクトの Customer クラスへの参照を持っていることを意味します。私のUIはその後、そのCustomerオブジェクトを使用して何かを行い、名前を変更するなどして、最終的にアダプターを再度呼び出してupdateCustomer(customer)を呼び出します。

これは大丈夫ですか?UI がアプリケーション コア内から Customer クラスを使用しても問題ありませんか。または、代わりに Customer を UICustomer などの新しい Customer オブジェクトに適応させ、代わりに UI をそれで動作させ、アダプター レベルで Customer と UICustomer の間を行き来する必要がありますか?

4

2 に答える 2

1

素晴らしい質問です。役に立つかもしれない例があります。 https://bitbucket.org/jeffreypalermo/onion-architecture

単純なアプリケーションの場合、コア ドメイン モデル オブジェクトを使用しても問題ありません。これらは、依存関係の厄介な触手がぶら下がっていないように設計されているため、非常にうまく機能し、非常に移植性があります。問題を引き起こすことなく、層を越えて移動できます。

于 2014-02-21T21:38:49.287 に答える