39

「ClassNameService」という名前のクラスをよく見かけますが、ロジックとしての違いは何ですか? これらのサービス クラスの目的は何ですか?

4

1 に答える 1

34

一般的に言えば、サービスによって制御されるドメイン オブジェクトの階層が存在する可能性があります。これらのドメイン オブジェクトが単なるデータ プレースホルダーであり、動作がない場合、これはオブジェクト指向プログラミングには当てはまりません。

ここにあるのは、Martin Fowler がAnemic Domain Modelと呼ぶものです。

より一般的には、OOP 内では、ドメイン オブジェクトのグループが動作を持ち、その相互作用がビジネス ロジックを形成します。このロジックは、Serviceによってカプセル化されます。

このようなサービスはステートフルであり、その状態はこれらのドメイン オブジェクトで構成されます。サービスはステートレスで、自己完結型の機能を提供する場合もあります。

非常に単純な電卓 API を想像してみてください。

HTTP 要求がアプリケーションに送信され、アプリケーションは API を使用してデータ抽出と複雑な計算を実行します。その後、アプリケーション エンドポイントは、計算されたデータを含む HTTP 応答を SOAP/REST/etc として返します。メッセージ。

応答が受信されると、これは元の要求を送信したクライアントに返されます。

クライアントが入力の計算と変換を手動で呼び出すことを強制したくありません。代わりに、このロジックをカプセル化し、期待される結果を返すサービス APIを単純に提供する必要があります。

Spring アプリケーションの場合、Spring アノテーションがあり@Serviceます。

于 2015-04-18T09:18:30.327 に答える