Всем, привет возник такой вопрос
каталог содержит категории
в категориях находятся объекты организация соотношения объектов и категорий друг к другу неважна
каталог представлен двумя классами
catalog и element
соответственно каждый класс представляет из себя интерфейсы для получения информации и ее размещения, удаления, обновления.
Но в каком классе реализовать интерфейс для получения информации о связях между категориями каталога и элементами? и почему?
есть 3 варианта
класс каталога
класс элементов
создать класс для связей
сдается мне вот что :
1) по-любому нужно будет найти все товары в категории
и нужно будет найти все категории связанные с товаром
а это означает что по сути необходимо реализовывать дублирующийся функционал в разных классах
2) формировать отдельный класс связей в целом верно, но тогда процесс сведется к тому, что класс связей предоставляет информации в виде иерархического списка, а классы объектов каталога наполняют этот список доп инфой т.е. придется делать множество запросов вместо 1.
3) есть еще вариант
сформировать базовым классом каталог связей и для него реализовать доп классы категорий и элементов, все вызовы должны будут идти к базовому классу который по сути представляет из себя общий интерфейс для обращений к дочерним классам. И вроде бы это то же верно но проблема в том что
при развитии системы этот класс превращается в управляющий класс, который начинает оттягивать на себя бизнес логику вспомогательных классов. НУ допустим предоставлять полную информацию о свойствах элемента или категории, обработка входящих данных и конечных т.п., т.е базовый класс реализует функционал, который по логике должен быть в вспомогательных, что кажется не верным
Вообщем как правильнее организовать систему?