Назначить структуру с другой структурой

Если я использую Class Table Inheritance значение:

одна таблица для продуктов, сохраняющая атрибуты, общие для всех типов продуктов. Затем одна таблица для каждого типа продукта, сохраняющая атрибуты, специфичные для этого типа продукта. -Bill Karwin

Мне нравятся лучшие предложения Билла Карвина. Я могу предвидеть один из недостатков, который я попытаюсь объяснить, как не стать проблемой.

Какой план непредвиденных обстоятельств должен иметь место, когда атрибут, который является общим для 1 типа, затем становится общим для 2, затем 3 и т. д.?

Например: (это просто пример, а не моя реальная проблема).

Если мы продаем мебель, мы можем продавать стулья, лампы, диваны, телевизоры и т. д. Тип телевизора может быть единственным типом, который мы носим с потреблением энергии. Поэтому я бы поместил атрибут power_consumption в tv_type_table. Но затем мы начинаем носить системы домашнего кинотеатра, которые также обладают свойством power_consumption. OK его только один другой продукт, поэтому я добавлю это поле в stereo_type_table, так как это, вероятно, проще всего на этом этапе. Но со временем, когда мы начинаем носить все больше электроники, мы понимаем, что power_consumption достаточно широка, чтобы она была в main_product_table. Что мне теперь делать?

Добавьте поле в main_product_table. Напишите сценарий для прокрутки электроники и установите правильное значение с каждого type_table на main_product_table. Затем отпустите этот столбец из каждого type_table.

Теперь, если я всегда использовал один и тот же класс GetProductData для взаимодействия с базой данных, чтобы вытащить информацию о продукте; то, если какие-либо изменения в коде теперь нуждаются в рефакторинге, они должны быть только для этого класса.

15
задан Tom Jowitt 15 August 2015 в 12:29
поделиться