java - 如何使用抽象类来简化 MVC 框架中的模型创建?

标签 java ruby-on-rails oop design-patterns model-view-controller

我开始设计一个应用程序来跟踪书籍文件。我希望能够分别存储平装本、精装本、音频、epub 和 kindle 书籍的信息。尽管我需要存储的信息存在一些细微的差异,但这些不同类型的书籍有很多共同点。

我认为最好将公共(public)属性保留在抽象 Book 类中,然后创建从该类继承的平装本、精装本等子类。我知道在 MVC 框架(例如 PlayFramework)中,您的模型将从基 Model 类继承。自大学以来,我查看并阅读了许多不同的 MVC 框架,看起来很多 MVC 框架都采用这种方法。由于许多语言不支持多重继承,因此我无法让我的模型从抽象 Book 类和许多 MVC 框架附带的框架基 Model 类继承。

如何解决这个问题?我的大部分经验都是使用 Java 以及一些 Ruby。我更喜欢使用一些 Java MVC 框架(Play、Spring、Grails)或 Rails。

我可以让 Book 扩展模型,然后让所有子类扩展 book 吗? Book 不再是一个抽象类,而是一个从未实际使用过的模型。 例如。

Public Class Book extends Model
{
    //I would put common functionality here
}


//This would be one of the subclasses that I want to be able to inherit from book
Public Class PaperbackBook extends Book
{
    //put the code specific to paperback book in here
}

在我的 Controller 中,我只会调用 PaperbackBook、HardbackBook 等。

最佳答案

恕我直言,让Book扩展Model。多田。

为了回答您的更新,是的,Book 扩展了 Model,并且所有其他书籍类型都扩展了 Book。并且,Book 仍然可以是抽象的。没有任何规定说扩展另一个类的类不能是抽象的。

关于java - 如何使用抽象类来简化 MVC 框架中的模型创建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25207834/

相关文章:

java - 使用非 block I/O 从 Runtime().exec 读取输入

java - 如何在eclipse中使用Maven Jetty插件运行多个maven项目

带有构造函数的 Javascript 模块

oop - nodejs的类图?

java - 在linux机器上从java执行mysql数据库导入脚本

javascript - 如何自定义 Rails 应用程序模板

ruby-on-rails - 如何建模多博客网站?

ruby-on-rails - DatabaseCleaner.clean_with( :truncate) does not reset auto incremented id

javascript - 为什么 instanceof 关键字不适用于 Backbone js 模型?

java - 以编程方式为 JAX-RS 注册 POJO 支持或 JSON 提供程序