2011-12-09 3 views
0

WinForm이 해당 WinForm에 해당하는 경우 비즈니스 로직 클래스 클래스 서버가 있습니다.클래스 디자인이 무엇이어야합니까

클래스 서버는 양식 컨트롤에 입력 된 값을 기반으로 일부 계산을 수행하고 클래스 클라이언트와 같은 다른 클래스로 해당 정보를 전달해야합니다.

내가 한 해결책은 중재자 패턴을 사용하는 것입니다.

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

클래스 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

당신은 당신이 호출자에게 반환해야하는 필드를 정의 자신의 클래스를 만들 필요가 정의 된 유형 (int, string, IEnumberable<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 개월 후에 주말에 이것을 "배웠다"라고해도 과언이 아니다. 나는 아직도 그것을 배우고있다. 그러나 당신이 주말에 기초에 대한 좋은 이해를 얻을 수있는 다양한 스크린 캐스트를 본다면 나는 생각한다. .

관련 문제