Много раз унаследованный класс может быть медленнее?
Есть только один способ ответить на вопросы производительности: попробуйте оба способа и оцените результаты.Тогда вы узнаете.
Что может быть недостатком в том, чтобы делать это так?
Недостаток чрезмерно сложных иерархий объектов:
1) они сбивают с толку, поскольку представляют понятия, не входящие в сферу бизнеса
Например, выВозможно, вы захотите иметь систему хранения, которая может хранить информацию о сотрудниках, компьютерах и конференц-залах.Итак, у вас есть классы StorableObject, Employee, Room, Computer, где Employee, Room и Computer наследуются от StorableObject.Вы имеете в виду «StorableObject», чтобы представить что-то о вашей реализации вашей базы данных .Кто-то наивно читает ваш код и спрашивает: «Почему человек является« хранимым объектом »? Конечно, компьютер - это хранимый объект, а комната - это место, где он хранится. Когда вы смешиваете механизмы общего ресурсакод со значением , означающим отношения «это своего рода» в бизнес-сфере, все запутывается.
2) вы получаете только один «стержень наследования» в C #; это единственныйЯзык наследования. Когда вы делаете выбор использовать наследование для одной вещи, это означает, что вы решили НЕ использовать наследование для чего-то другого. Если вы создаете базовый класс Vehicle и производные классы MilitaryVehicle и CivilianVehicle, то вы просто выбрали не имеют самолеты базового класса, потому что самолеты могут быть как гражданскими, так и военными.
Вы должны очень тщательно выбирать свою опору наследования, у вас есть только один шанс сделать это правильноЧем сложнее механизм совместного использования кода, тем больше вероятность того, что вы загляните в угол, где вывы застряли с кучей общего кода, но не можете использовать наследование для представления концепций, которые вы хотите смоделировать.
Существует лотов способов совместного использования кода без наследования.Попробуйте сохранить механизм наследования для вещей, которые действительно в нем нуждаются.