2013-04-24 90 views
-1

好的,我只是有一個問題。如何避免編寫重複的代碼

我需要一些專家意見;我有代碼,這是由多個客戶端使用。所以這是一件好事,不要重寫來自不同客戶端的邏輯,但是不同客戶端的請求和響應對象是不同的;這不是一件好事,導致我重寫了一些邏輯。

有沒有一種方法可以減輕這一點?我怎樣才能迎合不同的客戶/服務?

+1

這可能是一個有趣的問題,但現在它是完全不清楚的,無法回答。 – Heinzi 2013-04-24 13:17:52

+0

我的第一個直覺是告訴你爲請求和響應對象('public TResponse Process (TRequest request)')使用泛型。但我們需要更多的繼續。 – JosephHirn 2013-04-24 13:22:55

回答

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步:總結什麼班不同的是使用相同的接口

第2步:與包裝類常見的邏輯工作