利用接口可以定义基本方法的方式来做,这样在修改接口的时候,会影响到对应实现层,从而达到多继承一处更改,其他地方也能被感知的目的。即
/**
* 通用消息体请求报文参数
*/
public interface CurrencyRequestParams {
// private String orderID;
// private String ispCode;
// private String orgCode;
public String getOrderID();
public void setOrderID(String orderID);
public String getIspCode();
public void setIspCode(String ispCode);
public String getOrgCode();
public void setOrgCode(String orgCode);
}
首先利用接口定义出get,set方法,这里有一个知识前提,就是框架在对参数进行反序列化时,其实都是看的get方法,而不是里面的具体的值,所以我们在接口中定义好方法,本质上就间接定义好了参数。而使用该接口,就间接继承了该参数。
public class SysVulnDictUploadRequest implements CurrencyRequestParams, DataBaseParams {
private StaReqParams staReqParams;
private String timestamp;
private String orderID;
private String ispCode;
private String orgCode;
private Integer dataType;
private Integer dataSubType;
public StaReqParams getStaReqParams() {
return staReqParams;
}
public void setStaReqParams(StaReqParams staReqParams) {
this.staReqParams = staReqParams;
}
public String getTimestamp() {
return timestamp;
}
public void setTimestamp(String timestamp) {
this.timestamp = timestamp;
}
@Override
public String getOrderID() {
return orderID;
}
@Override
public void setOrderID(String orderID) {
this.orderID = orderID;
}
@Override
public String getIspCode() {
return ispCode;
}
@Override
public void setIspCode(String ispCode) {
this.ispCode = ispCode;
}
@Override
public String getOrgCode() {
return orgCode;
}
@Override
public void setOrgCode(String orgCode) {
this.orgCode = orgCode;
}
@Override
public Integer getDataType() {
return dataType;
}
@Override
public void setDataType(Integer dataType) {
this.dataType = dataType;
}
@Override
public Integer getDataSubType() {
return dataSubType;
}
@Override
public void setDataSubType(Integer dataSubType) {
this.dataSubType = dataSubType;
}
}
未来我们修改了接口中的方法,在编译的时候,这些实现类会报错,也会强制修改,从而达到了防止改掉的目的,也间接达到了多继承。