2011-09-29 9 views
7

誰かが私のために定義することができます概念的な違いは、プロバイダ、サービスとブローカの間ですか?デザインパターンの命名と説明:プロバイダ、サービス、ブローカー

私は定期的にMVCアプリケーションを作成し、多くのビジネスロジックを他のクラスにオフロードします。空想的なものではなく、パラメータを渡してPOCOインスタンスを受け取るだけです。

コントローラの重い荷物を運んでいるクラスに適切なラベルは何ですか?

+0

興味深い質問が、(プロバイダ、サービス、ブローカー)は、命名規則を参照します。デザインパターンではありません(あなたのタイトルでは認めます)!私に賛成してくれますか? –

+0

プロバイダーとブローカーの設計パターンがあると私は理解していますが、間違っている可能性があります。しかし、はい、あなたは正しいです、私の具体的な質問は、私が導入している振る舞いの命名規則に関するものです。私が責任を負担しているクラスの名前を教えてください。 – Shawn

+0

ブローカは、データまたはイベントを他のオブジェクト間で転送します。それはプロバイダ(例えば)よりも積極的な役割を果たすが、転送のためだけである傾向がある。実際のブローカーのように、実際にサービス自体を提供するものではありません。 –

答えて

21

プロバイダは本当に誰かが、彼らは多くの実装が存在する可能性があるために、いくつかの抽象契約について話しているプロバイダの使用に言及している一般的Strategy Pattern

のためのちょうど別の名前です。

//As an abstract base class 
public void SetupRoles(RoleProvider provider){} 

//As an interface 
public void SetupRoles(IRoleProvider provider){} 

//As a delegate 
public void SetupRoles(Action<String> addRole){} 

サービスは、通常、メソッドだけを持つステートレスオブジェクトを示すためのものです。サービスは戦略として使用できますが、必ずしもそうである必要はありません。

//Plain old service... doesn't even need the web 
// CRAZY TALK MAN!!! 
public static class RoleService 
{ 
    public static void SetupRoles(){}; 
    public static String[] GetRoles(){}; 
} 

Brokerは実際には...仲介に責任があります。サービスとオブジェクトの間でメッセージを移動し、サービス間の相互作用を調整して分離した状態に保つように設計されています。

public class Broker 
{ 
    public void SendImportantMessage(Message msg) 
    { 
     //Do some important processing here 
     // Maybe some validation 
     NotifySomeOtherServiceOrClassOrMaybeBobFromAccounting(msg); 
    } 
} 
+1

これはまさに私が探していたものです。優れた説明。ありがとう。 – Shawn

関連する問題