【发布时间】:2017-01-19 19:07:45
【问题描述】:
我想优化代码以使用“BDTO 扩展 ADTO”,而不是在 DForm 和 EForm 中复制方法 any() 创建一个新的类抽象 (CForm) 以及在何处放置逻辑方法 any()。
如何解决重复方法?最佳实践如何?
public class ADTO {
public String a;
public String getA() {return a;}
public void setA(String a) {this.a = a;}
}
public class BDTO extends ADTO{
public String b;
public String getB() {return b;}
public void setB(String b) {this.b = b;}
}
public abstract class CForm {
ADTO aDTO;
// BDTO bDTO;
public ADTO getADTO() {return aDTO;}
public void setADTO(ADTO aDTO){this.aDTO = aDTO;}
// public BDTO getbDTO() {return bDTO;}
// public void setbDTO(BDTO bDTO) {this.bDTO = bDTO;}
public void any() {//
aDTO.getA(); //
} //
// how resolve duplicate method ?
//public void any(){ // when i use only attribute aDTO and run any1() in EForm, aDTO is null
// bDTO.getA(); //
//}
}
public class DForm extends CForm {
public void anyD(){
getADTO().setA("test");
any(); // run method here is ok
}
}
public class EForm extends CForm{
//form using here any() and BDTO
public void anyE(){
getADTO().setA("test");
any(); //run method here aDTO is null, why?
}
}
【问题讨论】:
-
您能更具体地说明您的问题吗?您的代码没有按预期工作吗?
-
我想优化代码以使用“BDTO 扩展 ADTO”,而不是在 DForm 和 EForm 中复制方法 any() 创建一个新的类抽象 (CForm) 以及放置逻辑方法的位置 any() .
标签: java interface abstract extends