Проект saas-сервис типа мегаплана. В голове есть приблизительная структура классов, например: работа с БД, работа с задачами, сервисный класс отвечающий за персональные настройки, валидатор данных, api.
Вопрос: по каким признакам можно определить что этот класс нужно сделать абстрактным а конкретные реализации делать уже в наследниках?
Например если есть несколько типов пользователей (бесплатный, тариф 1, тариф 2) стоит ли делать класс пользователей абстрактным и в нём уже задавать общие свойства пользователей а дальше уже делать их права разными?
Или что стоит вынести в абстракцию для класса работы с БД например?
Вопрос: по каким признакам можно определить что этот класс нужно сделать абстрактным а конкретные реализации делать уже в наследниках?
В самом вопросе уже имеется ответ. Когда имеется необходимость в полиморфизме (один интерфейс — множество реализаций), тогда стоит подумать о создании абстрактного класса (в роли интерфейса, зависит от ЯП), где будут указаны основные методы для работы с данными. И в зависимости от типа данных, уже создаются дочерние классы с конкретными реализациями под них.
Абстрактный класс стоит создавать только тогда когда ты понимаешь что объект данного класса создавать не имеет смысла, но все поля и методы которые находятся внутри нашего абстрактного класса должны быть у всех дочерних классов, то есть дочерний класс не может быть создан не имея нужных полей...
На счет тарифов, да можно. Так будет удобнее читать код и ориентироваться.
А вот БД, я думаю только в том случае если у вас есть много других баз данных, и было бы удобно создать один абстрактный класс для инициализации методов типа close()
, connect()
и т.д. а внутри у дочерних классов имплементировать их под нужный вам БД. Но в этом случае, можно даже обойтись интерфейсом нежели чем абстрактным классом.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Имеется файл xml, в котором присутствуют примерно такие участки кода:
Здравствуйте, относительно недвано Вконтакте открыла Streaming API, но информации по ней не много 2 статьи на хабре, и документация с примерами...