创建对象的方法
目前,
我有以下内容 结构
Abstract Class A{
public abstract void B();
public abstract void C();
public abstract void D();
public void E(){
sample Statements;
}
}
public class Z extends A{
public void B() {
// TODO Auto-generated method stub
}
public void C() {
// TODO Auto-generated method stub
}
public void D() {
// TODO Auto-generated method stub
}
public void X() {
Sample Statements;;
Whcih is very specific to this Class;
}
}
我在上面的Z类中的问题,我不想暗示 我将仅定义非常特定于
的方法X.以同样的方式我将定义一个新的P类,即im 但是没有实现其他两种方法。
这是实施Creatin方式的正确方法吗? 适合我创建对象的要求吗?
还是有更好的方法来创建
我担心Z级,因为方法C&不敢 在我的编程过程中出现任何不可预见的影响
我还有一个想法
我应该使用工厂设计模式来实现相同的对象吗?
答案 0 :(得分:3)
您的设计可能违反Liskov替代原则。考虑使用X()和/或委托的接口而不是继承。
答案 1 :(得分:0)
嗨,这真的取决于你的程序是否是一个合适的结构。如果不使用方法B,C和D,则可能不适合Z类扩展A.
所以也许可以考虑是否有意义
为了防止自己编写错误,可以在所有重写方法上抛出UnsupportedOperationException(String message)。
另一个想法可能是将@Deprecated注释添加到该方法。如果您在代码中意外使用该方法,则应警告您。这是一个黑客并滥用它。
答案 2 :(得分:0)
将这些抽象方法移动到接口。如果有人需要那些抽象的方法和方法X,他们可以扩展A并实现新的接口。