Java继承设计理念 - 建议通缉

时间:2012-03-18 22:22:44

标签: java oop inheritance

我会试着总结一下。

  • 使用Hibernate框架进行ORM(不太相关)

这是我的想法:

  • 我希望我所有的模型类(纯粹包含字段的get / set,代表我的表)都从一个空的父类继承

  • 用于记录检索/存储的单个数据库类,其中包含许多方法,即方法。对于返回集合的方法,它们返回一种父对象,并在检索时强制转换为正确的类类型

小例子

父类(父对象)

public class DataModel {

}

子课程

public class A extends DataModel {

    private String name;
    private String message;


    public A (String name) {
        this.name = name;
    }

    public String getMessage() {
        return message;
    }

    public String getName() {
        return name;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public void setName(String name) {
        this.name = name;
    }

}

数据库类

public class Database {

    public DataModel returnSingleRecord() {



//eventually have an enum as a param to determine what type of child object of DataModel they would like returned


        //data retrieval here etc
        A a = new A("ashley");
        return a;

    }

}

使用示例

public class MainController {


    public static void main(String[] args) {

        Database r = new Database();


        A a = (A) r.returnSingleRecord();

        System.out.println(a.getName());

    }
}

我将总共有12个类似于A的类。最终我的计划是构建一个Enum类,每个返回集合的方法都会接受一个Enum值,方法中的switch语句将决定什么返回对象,如A,B或C.

这是个好主意吗?老实说,这似乎是一种很好的方法,可以显着减少冗余代码并将所有数据库方法排除在10以下。只是一个肯定似乎就足以作为答案,看起来好得令人难以置信:)。

编辑:只是要注意我是否要将数据传递到存储方法,我必须使用DataModel作为类型和instanceof来确定类类型,这可以在一个方法中完成所以仍然看起来好像一个好主意

EDIT2:得出结论,这是一个好主意,但是对于返回特定信息,例如在日期之间,扩展数据库的几个类将是最合适的选择。

1 个答案:

答案 0 :(得分:1)

是的,我认为这是一个好主意。我们现在正在为我的一个类使用数据库做一个大项目,我们的模型中有一个名为“BusinessObject”的顶级父类,它有一个id(一个GUID),一个bone for alreadyInDatabase(知道是否保存需要是插入或更新)和脏的布尔值(无论何时调用set方法,它都会将该布尔值设置为true,以确定该对象是否与数据库中的对象不同。事实证明它非常有用。我们' ve还编写了一个非常有用且通用的数据访问对象,用于将数据输入和输出数据库。我知道框架可以处理大部分内容。无论如何,您的计划对我来说听起来不错:)