您可以返回一個抽象類。有沒有關於返回接口或抽象類的法律,它取決於你的軟件設計:
一種方式來回報您的x
,y
,z
是使用Factory Pattern。
例(僞):
public class PQRFactory {
public PQR getPQR(condition) {
switch (condition) {
case condition_x :
return new x();
break;
case condition_y :
return new y();
break;
case condition_z :
return new z();
break;
default : return null;
}
}
}
如果你不想使用condition
那麼你可以使用一個Builder pattern做什麼@JVerstry公佈。
當您的課程實施ABC
界面時,您可以使用Strategy pattern通過工廠供ABC
實施人員使用。
例(僞):
public abstract class AbstractABC implements ABC {
protected PQRFactory factory;
protected AbstractABC() {
factory = new PQRFactory();
}
protected AbstractABC(PQRFactory factory) {
this.factory = factory;
}
}
public class ABCImpl1 extends AbstractABC() {
//Override constructors needed to construct this class
}
希望這有助於。
只要確保在實現ABC的每個類中的returnRightClass()的每個實現都返回PQR(x,y或z)的正確實例。我該如何做到這一點 –
ohh yes ...是個白癡...... –
@Saurabh請參閱編輯我的答案 – JVerstry