web-dev-qa-db-ja.com

プログラミングのサービスクラスとは何ですか?

「ClassNameService」という名前のクラスが常に表示されますが、ロジックとしての違いは何ですか?これらのサービスクラスの目標は何ですか?

19

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

以下を確認してください。 http://www.martinfowler.com/bliki/AnemicDomainModel.html

より一般的には、OOP内では、ドメインオブジェクトのグループは、その相互作用がビジネスロジックを形成する動作を持ち、このロジックはServiceによってカプセル化されます。そのようなサービスはstatefulであり、その状態はこれらのドメインオブジェクトで構成されています。サービスはstatelessであり、自給自足の機能を提供する場合があります。非常に単純な電卓APIを考えてください。

次の例を想像してください:Webアプリケーションに来たHTTPリクエストがあり、データを抽出し、複雑な計算を実行し、完了したらこの計算されたデータをSOAPメッセージとしてエンドポイントに送信する必要があります。応答を受け取ったら、元の要求を送信したクライアントに応答を返す必要があります。

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

Springアプリケーションの場合、Springアノテーションがあります。@ Service http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/stereotype/Service.html

24
John