2012-07-04 44 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); } 
} 
相关问题