1 回答

TA貢獻(xiàn)1829條經(jīng)驗 獲得超9個贊
你的意思是 defaultHttpResponse.setRequest() 和 defaultHttpResponse.setHttpRequest() 的參數(shù)是有緊密聯(lián)系的,這種情況你可以只保留一個 set 接口,就是 setRequest,提供一個 get 接口,getDefaultRequest(),大概就像這樣
class DefaultHttpResponse {
private HttpRequest request;
private DefaultHttpRequest defaultRequest;
public void setRequest(HttpRequest request) {
this.request = request;
defaultRequest = new DefaultHttpRequest(request);
}
public HttpDefaultReqeust getDefaultRequest() {
return defaultRequest;
}
}
也可以通過互斥來保證
class DefaultHttpResponse {
private HttpRequest request;
private DefaultHttpRequest defaultRequest;
public void setRequest(HttpRequest request) {
if (defaultRequest != null) {
throw new RuntimeException();
}
this.request = request;
defaultRequest = new DefaultHttpRequest(request);
}
public void setDefaultRequest(DefaultHttpRequest defaultRequest) {
if (request != null) {
throw new RuntimeException();
}
this.defaultReqeust = defaultRequst;
request = defaultRequest.getRequest();
}
}
或者一致性檢查
class DefaultHttpResponse {
private HttpRequest request;
private DefaultHttpRequest defaultRequest;
public void setRequest(HttpRequest request) {
if (defaultReqeust != null && defaultReqeust.getRequest() != request) {
throw new RuntimeException();
}
this.request = request;
}
public void setDefaultRequest(DefaultHttpRequest defaultRequest) {
if (request != null && defaultReqeust.getRequest() != request) {
throw new RuntimeException();
}
this.defaultRequest = defaultRequest;
}
}
添加回答
舉報