2012-07-04 43 views
0

我執行了一些測試我的應用程序中,但這樣做之前,我要我的初始化響應信息(執行目錄,使用resources..etc)。什麼可能是這種情況下的良好設計模式?

經過一個特定的點後,我將能夠確定我即將執行的測試類型,所以現在我必須有一個適當的響應實例,但這迫使我將舊對象中的字段複製到新的對象當事情發生變化時手動導致錯誤。

例如,假設我有以下類別:

class BaseResponse{ 
    private int port; 
    private int trials; 
    protected BaseResponse(BaseResponse response){ 
     this.port = response.port; 
     this.trials = response.port; 
    } 
} 
class TcpResponse extends BaseResponse{ 
    public TcpResponse(BaseResponse response){ 
     super(response); 
    } 
    private int tcpSpecificMetric; 
} 

因此,作爲一個開始我初始化BaseResponse類,填滿它,然後當我發現我將運行TCP測試,我必須初始化一個新的TcpResponse

樣了良好的設計,這個人的意見? 在此先感謝。

回答

1

寫工廠(又名虛擬構造函數)或生成器,它知道如何創建一個基於傳遞給它的參數不同類型的BaseResponse

public class BaseResponseFactory { 
    private static BaseResponseFactory INSTANCE = new BaseResponseFactory(); 

    private BaseResponseFactory() {} 

    public static BaseResponseFactory getInstance() { return INSTANCE; } 

    public BaseResponse create(int port, int trials) { return new BaseResponse(port, trials); } 

    public BaseResponse create(int port, int trials, int tcpMetric) { return new TcpResponse(port, trials, tcpMetric); } 
} 
相關問題