2011-12-09 6 views
0

WinFormに対応するWinFormがあれば、Class Log Serverというクラスがあります。クラスの設計とは何か

クラスサーバーはフォームコントロールに入力された値に基づいて計算を行い、その情報を別のクラス、たとえばクラスclientに渡す必要があります。

私がした解決策は、メディエータパターンを使用しています。

class Server 
{ 
    Mediator m = new Mediator(); 
    m.IValue=txtValue.text; 
    Client c =new Client(m); 

} 

    class Mediator 
    { 
     private int iValue 
     public int IValue{get,set}; 
    } 

    class Client 
    { 
     Mediator m; 
     private int val; 
     Client(Mediator m) 
     { 
     this.m=m 
     } 
     val = m.IValue; 
    } 

他の方法がありますか?

+0

私はあなたが何を求めているのか分かりません。より具体的になり、メディエーターのパターンを見ている理由と、そのメディエーターの目標を達成することを希望する理由に関する詳細情報を提供できますか? –

+0

class Clientが関数呼び出しのために複数のvaueを返す必要がある状況を想像してください。 – user1006897

+0

これはまだあなたがしようとしていることを理解するのに十分な情報ではありません。 –

答えて

1

エンティティを単純に切り離すだけの方がよいと思います。

クラス情報とは、ビジネスロジックがどのような作業をしてからクライアントに渡すかということです。

次のように実行します。

Interface IInformation 
{ 
} 

class Info: IInformation 
{ 
} 

class Server 
{ 
    ProcessInfo(IInformation infoUserInput) 
    { 
    //business logic 
    . 
    . 
    //pass to client 
    client c = new client(infoUserInput); 
    } 
} 


class client 
{ 
    IInformation revcieveInfo; 
    client(IInformation rec) 
    { 
     revcieveInfo = rec; 
    } 
} 
0

、あなたが呼び出し元に戻る必要があり、これらのフィールドを定義する独自のクラスを作成する必要が定義されたタイプ(intstringIEnumberable<T>、または何でも)以上のものを返すために必要があるとき。

たとえば、発信者にすべての情報を返す必要がある場合は、Addressクラスを作成します。呼び出し元はメソッドを呼び出し、その代わりにAddressオブジェクトを返す必要があります。

public class Address 
{ 
    public string Street { get; set; } 
    public string Unit { get; set; } 
    public string City { get; set; } 
    public string Region { get; set; } 
    public string PostalCode { get; set; } 
} 

public Address GetSomeAddress() 
{ 
    // Perform the logic to either retrieve or create the address 
    var result = new Address(); 

    // Perform some action on it 
    result.Street = "123 No Place"; 

    // and return it 
    return result; 
} 

あなたが働いているドメインを指定していないので、誰かがそれ以外で提供できるヘルプはあまりありません。あなたがあなたのドメインに関する詳細情報(あなたが達成しようとしているもの)を投稿できるなら、より詳細な答えを得ることができます。

これ以上の情報がなければ、なぜあなたがメディエーターパターンを使用しているか心配しているのか分かりません。

0

あなたはPresentation Modelデザインパターンについて読んでみたいと思うかもしれません。私はMVC、PM、MVVMをメディエーターパターンの一種と考えています。ビジネスロジックをビューから外すためのアプローチはすべて、

また、C#をちょうど開始している場合は、WPFの学習を検討することを検討することもできます。 MVVMパターンは焼き盛りされており、多くの良いチュートリアルや例があります。私はexpereience on learning WPF and MVVMをブログエントリに書きました。あなたに役立つかもしれないリンクがあります。それは大きなと言っても過言ではありません。私は週末にこのことを学んだのですが、それは6ヵ月後です。私はまだそれを学んでいますが、あなたは週末の基礎をよく知ることができます。