Почему нельзя наследоваться от класса БД? Представим себе что у нас есть класс DB, который работает с базой данных. Он имеет простые и понятные методы CRUD.
Почему бы от него не унаследовать остальные классы? Например класс юзеров или класс статей.
Это же очень удобно, я просто могу сделать parent::saveUser();
Можете объяснить почему это плохая практика (только не так что "это нарушает принцип единственной обязанности" - это я и сам знаю).
И как правильно определить какой клас можно от какого наследовать, и по каким признакам можно определить что нельзя и это плохая идея?

21 Авг 2019 в 07:00
142 +1
1
Ответы
1

Наследование от класса DB для других классов, таких как класс юзеров или класс статей, является плохой практикой по нескольким причинам:

Жесткая зависимость: если вы наследуете другие классы от класса DB, то вы создаете жесткую зависимость между этими классами и базой данных. Это ограничивает возможность изменения базы данных в будущем или использования другой технологии для хранения данных.

Нарушение принципа инкапсуляции: наследование от класса DB может привести к нарушению принципа инкапсуляции, поскольку классы юзеров или статей будут иметь доступ к методам и свойствам класса DB, что может привести к некорректному использованию данных или нарушению прав доступа.

Усложнение кода: наследование от класса DB может усложнить код и сделать его менее читаемым и поддерживаемым. Классы юзеров или статей должны быть независимыми и иметь свою собственную логику, связанную с их функциональностью.

Чтобы определить, какой класс можно от какого наследовать, нужно учитывать следующие моменты:

Принцип единственной ответственности: классы должны иметь только одну причину для изменения. Если класс отвечает только за работу с базой данных, то его не следует наследовать другим классам, чтобы избежать нарушения этого принципа.

Абстракция данных: если класс представляет конкретные данные (например, пользователей или статьи), то он должен быть независимым от класса, работающего с базой данных. Вместо этого, можно использовать принципы композиции или делегирования, чтобы классы могли взаимодействовать между собой.

Отсутствие жесткой зависимости: классы должны быть слабо связаны друг с другом, чтобы обеспечить гибкость и возможность легкого изменения кода в будущем. Наследование от класса DB может создать жесткую зависимость, которая усложнит разработку и поддержку программы.

Вместо наследования от класса DB рекомендуется использовать принципы композиции, делегирования и инкапсуляции для управления взаимосвязями между классами. Это позволит создать более гибкую и модульную архитектуру программы.

20 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 588 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир