Я начинаю разрабатывать приложение для отслеживания файлов для книг. Я хочу иметь возможность хранить информацию в мягкой обложке, в твердом переплете, аудио, epub и разжигании книг отдельно. Несмотря на некоторые небольшие различия в информации, которую мне нужно хранить, эти разные типы книг имеют много общего.
Я думал, что было бы лучше сохранить общие атрибуты в абстрактном классе Book, а затем создать дочерние классы в мягкой обложке, в твердом переплете и т.д., Которые наследуются от этого класса. Я знаю, что в рамках MVC, таких как PlayFramework, ваша модель наследуется от базового класса модели. Я смотрел и читал о многих различных фреймворках MVC со времени колледжа, и похоже, что многие рамки MVC используют этот подход. Поскольку многие языки не поддерживают множественное наследование, я не могу наследовать свои модели из моего абстрактного класса Book и базового класса Framework, который поставляется с множеством структур MVC.
Как я могу обойти эту проблему? Большая часть моего опыта связана с Java с небольшим количеством Ruby. Я бы предпочел использовать некоторую среду Java MVC (Play, Spring, Grails) или Rails.
Могу ли я иметь модель расширения книги, а затем расширить все подклассы книги? Вместо того, чтобы книга была абстрактным классом, она была бы моделью, которая никогда не используется. например.
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
}
В моих контроллерах я бы назвал только PaperbackBook, HardbackBook и т.д.
ИМХО. Book
расширяет Model
. Тад.
В ответ на ваше обновление да, есть Book
Extends Model
и все остальные типы Book
расширяют Book
. И, Book
все еще может быть абстрактной. Ничто не говорит о том, что класс, который расширяет другой класс, не может быть абстрактным.