Как вы можете использовать абстрактные классы для упрощения создания моделей в средах MVC?

1

Я начинаю разрабатывать приложение для отслеживания файлов для книг. Я хочу иметь возможность хранить информацию в мягкой обложке, в твердом переплете, аудио, 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 и т.д.

  • 0
    Вы можете включить модуль с общим поведением
Теги:
model-view-controller
oop
design-patterns

1 ответ

1
Лучший ответ

ИМХО. Book расширяет Model. Тад.

В ответ на ваше обновление да, есть Book Extends Model и все остальные типы Book расширяют Book. И, Book все еще может быть абстрактной. Ничто не говорит о том, что класс, который расширяет другой класс, не может быть абстрактным.

  • 0
    Это не дает ответа на вопрос. Чтобы критиковать или запросить разъяснения у автора, оставьте комментарий под своим постом.
  • 0
    На самом деле, это действительно отвечает на вопрос. Как предполагает обновление ОП на этот пост (сделано после этого ответа).
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню