我有 2 個請求CreateRequest和UpdateRequest. 唯一的區別是,有些欄位在UpdateRequest. 出于這個原因,我需要多載以下方法CreateRequest:
private void setRequest(CreateRequest request) {
IntegrationRequest intRequest = new IntegrationRequest();
intRequest.setLocationId(request.getLocationId());
intRequest.setApiToken(request.getApiToken());
// other setters and procedures
}
多載的方法是這樣的:
private void setRequest(UpdateRequest request) {
IntegrationRequest intRequest = new IntegrationRequest();
intRequest.setLocationId(request.getLocationId());
intRequest.setApiToken(request.getApiToken());
// other setters and procedures
}
這兩種方法都是從同一個類中呼叫的,因此,我不能將請求作為通用方式傳遞。在這個場景中,我想知道是否有更好的方法而不是多載setRequest以使用單個方法而不是 2 個方法?
uj5u.com熱心網友回復:
CreateRequest為和使用介面怎么樣UpdateRequest?
interface Request {
String / int getLocationId();
String getApiToken();
}
class CreateRequest implements Request {
public CreateRequest(String apiToken) {
// check for apiToken != null and set the value to your object
}
...
}
class UpdateRequest implements Request {...}
然后,您只需要一種方法setRequest來獲取 Request 的介面實作作為引數。
private void setRequest(Request request) {...}
您還可以將它與您的基類結合使用:
abstract class BaseRequest {
String / int locationId;
String apiToken;
// getter / setter / other stuff
}
然后,您的 Request 類的簽名將是:
class CreateRequest extends BaseRequest implements Request {...}
class UpdateRequest extends BaseRequest implements Request {...}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/466494.html
