这是用Java创建对象的更好方法吗?

时间:2010-12-21 11:31:58

标签: java design-patterns oop

创建对象的方法

目前,

我有以下内容 结构

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&不敢 在我的编程过程中出现任何不可预见的影响

我还有一个想法

我应该使用工厂设计模式来实现相同的对象吗?

3 个答案:

答案 0 :(得分:3)

您的设计可能违反Liskov替代原则。考虑使用X()和/或委托的接口而不是继承。

答案 1 :(得分:0)

嗨,这真的取决于你的程序是否是一个合适的结构。如果不使用方法B,C和D,则可能不适合Z类扩展A.
所以也许可以考虑是否有意义

为了防止自己编写错误,可以在所有重写方法上抛出UnsupportedOperationException(String message)。
另一个想法可能是将@Deprecated注释添加到该方法。如果您在代码中意外使用该方法,则应警告您。这是一个黑客并滥用它。

答案 2 :(得分:0)

将这些抽象方法移动到接口。如果有人需要那些抽象的方法和方法X,他们可以扩展A并实现新的接口。