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/

相关文章:

c++ - 与 std::list 一起使用的指针上的接口(interface)类型转换的多重继承

java - PowerMock ECLemma 覆盖问题

java - 如何以左右水平可导航样式显示小图片图标库,就像在 JavaScript/JQuery 中一样

jquery - Ruby on Rails 和使用 PhoneGap 的移动开发

ruby-on-rails - 使用 kaminari 进行太阳黑子分页

javascript - createjs.Shape() 不适用于 OOP JavaScript

java - 如何有效地将组件添加到带有背景图像的 Swing 面板?

java - 需要帮助来判断向左或向右滑动

ruby-on-rails - 如何修改cancan加载和授权资源使用不同的id加载资源

python - 使用哪个 : self or super?