Я чувствую, что, вероятно, существует хорошо продуманный шаблон проектирования для обработки ситуаций, подобных приведенной ниже, но я достаточно опытен, чтобы с ним столкнуться!
Основная проблема
Суть проблемы в том, что у меня есть myClass
с методом myMethod
, и у меня есть класс extClass
, который расширяет myClass
, и я хочу, чтобы myMethod
имел слегка другое поведение в extMethod
, тогда я могу перезаписать метод в расширенном классе, но затем я получу дублированный код.
Конкретные детали
Конкретная проблема, котораяЯ пытаюсь разобраться с использованием MVC, где у меня есть базовый класс модели, который определяет, как выполняются вставки и удаления.Для некоторых таблиц базы данных я реализовал управление версиями записей, которое выполняется с помощью класса version_model
, который расширяет базовый класс и перезаписывает методы вставки / удаления, добавляемые в триггеры, для создания версий записей.Это все хорошо, за исключением того, что для некоторых конкретных моделей таблиц базы данных я хочу определить пользовательские методы вставки / удаления, которые будут автоматически обрабатывать вставки в нумерованные таблицы (например, таблица таблиц> адреса).Это нормально, за исключением случаев, когда мне нужно скопировать код из version_model или base_model в зависимости от того, какой из них расширяется.
Я думал, что это может быть решено с помощью хуков, поэтому мои методы вставки / удаления version_model и base_modelвызвал методы before_insert () и after_insert (), тогда я мог бы добавить дополнительную функциональность, не дублируя базовую функциональность.Есть ли лучший способ сделать это?