2013-04-24 6 views
-1

좋아요, 질문이 있습니다.중복 코드 작성을 피하는 방법

전문가의 조언이 필요합니다. 여러 클라이언트에서 사용하는 코드가 있습니다. 따라서 다른 클라이언트의 로직을 다시 작성하지 않아도되지만, 다른 클라이언트의 요청 및 응답 객체는 차이점이 있습니다. 그건 좋은 일이 아니야. 내가 어떤 논리를 다시 쓰게 했어.

내가이 문제를 완화 할 수있는 방법이 있습니까? 다른 고객/서비스를 어떻게 수용 할 수 있습니까? 동일한 인터페이스

2 단계로 클래스에서 다른 무엇

+1

이것은 * 흥미로운 질문 일 수 있습니다. 그러나 이것은 현재 명확하지 않으며 대답 할 수 없습니다. – Heinzi

+0

필자의 첫 번째 본능은 요청 및 응답 객체 ('public TResponse Process (TRequest request)')에 제네릭을 사용하라고 지시하는 것이다. 그러나 우리는 조금 더 가야합니다. – JosephHirn

답변

0

기본 클래스에 공유 코드를 넣어 래퍼 클래스에 공통의 논리 작업을하고있는 모든 특정 코드를 넣어 상속 클래스.

public class MySharedCode 
{ 
    public void MyShareMethodA() 
    { 
     // Shared code. 
    } 

    public void MyShareMethodB() 
    { 
     // Shared code. 
    } 
} 

public class SpecificCodeForASpecificClient:MySharedCode 
{ 
    public void SendRequest(MySpecificRequestA request) 
    { 
     // Specific code. 
    } 

    public MySpecificResponse ReadRepsonse() 
    { 
     // Specific code. 
    } 
} 

이 제품은 찾고 계신 것입니까? 아니면 모든 클라이언트에 대해 동일한 코드를 송수신합니까? 이 경우 제네릭을 시도해 볼 수 있습니다.

public class MySharedCode<TRequest, TResponse> 
    where: TResponse: new() 
{ 
    public void MyShareMethodA() 
    { 
     // Shared code. 
    } 

    public void MyShareMethodB() 
    { 
     // Shared code. 
    } 

    public void SendRequest(TRequest request) 
    { 
     // Shared code with specific request. 
    } 

    public TResponse ReadRepsonse() 
    { 
     // Shared code with specific response. 
    } 
} 
1

1 단계 랩

관련 문제