ハンドラー、マネージャー、コントローラーの違い


21

クラスに「Handler」、「Manager」、または「Controller」という名前を付けるのに違いはありますか?IE: 、PurchaseManager、。PurchaseHandlerPurchaseController

これらの十分な意味は同じ意味を伝えますか、それとも明確な違いがありますか?

言語に依存しない答えがない場合は、Javaを言語と考えてください。


1
ここでは、より多くのコンテキストが役立ちます。多くの(多くの!)フレームワークには、区別のかなり明確な定義があります。しかし、これらの言葉の背後に普遍的な定義はありません。どのようなコンテキストで作業していますか?どのフレームワークを使用していますか?どの言語を使用していますか?
-S.ロット

明確化された言語。
hpique

回答:


15

通常、「コントローラー」は、ユーザーインターフェイスコンポーネントとモデル(購入など)の間のインターフェイスです。コントローラーはシンクラスである必要があり、ユーザーインターフェイスイベントをモデル関数にマッピングする以上のことはしません。

「マネージャー」はコードの匂いです。購入自体を管理する必要があります。または、ベンダーやバイヤーなどの所有クラスによって管理することもできます。

「ハンドラ」は通常、オブジェクトにラップされた単一の関数です。これらは、一流の機能を持たないレガシー言語でプログラミングする場合に必要です。


私も「マネージャー」の概念が好きではありませんが、独自のビジネスロジックを処理させない理由は、プログラマがBean / pojo / dtoを複雑なビジネスオペレーションから分離したいからだと思います。
スリダールサルノバト

1
言語認識の観点からManagerについては同意しますが、場合によってはManagerを正しい用語として使用できることを付け加えます。たとえば、プロトコルの観点からマネージャーについて話すことは問題ありません。SNMPには、エージェントのセットを「管理」するマネージャーがいます。これは、この場合に使用する正しい用語です。ただし、これは「マネージャー」の自発的な使用を正当化します。
パトリック

7

私の答えは定義に基づいていませんが、「コントローラー」とラベル付けされたものを排他的な実装と見なし、「ハンドラー」と包括的と見なします。「PurchaseController」が1つだけ存在し、「PurchaseHandler」が複数存在する可能性があります。

Controllerのもう1つの一般的な名前は「ブローカー」だと思います。


これらの定義をありがとう。数行で多くの知識を入力しました。
acearch
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.