Шаблон дизайна для класса, который работает с коллекцией других объектов? - PullRequest
3 голосов
/ 26 октября 2009

У меня есть модель User, которая может содержать 1-n моделей UserGroup, каждая из которых содержит данные об отношениях пользователя с определенной группой (например, если они являются администратором группы, когда они присоединились к группе, и др.).

Я хотел бы предоставить некоторые вспомогательные методы, такие как isGroupUser () и isGroupAdmin (), которые работают со всем набором моделей UserGroup, хранящихся в модели User. Прямо сейчас эти методы в модели User, но они примерно вдвое больше, чем модель.

Имеет ли смысл помещать код, работающий на моделях UserGroup, в свой собственный класс? Таким образом, модель User будет содержать единственный экземпляр этого класса «interface», который теперь также будет содержать модели UserGroup для работы. Я чувствую, что благодаря этому связанный код красиво отделен, и модель User не становится перегруженной.

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

Спасибо за понимание!

Ответы [ 2 ]

1 голос
/ 26 октября 2009

Я полагаю, что еще одно большое преимущество, заключающееся в том, что все это делает UserAccessControl или UserPermissions хорошим параметром или объектом многократного использования.

1 голос
/ 26 октября 2009

Итератор : Предоставляет способ последовательного доступа к элементам агрегатного объекта без предоставления его базового представления. [GoF, p257]

Посетитель : представляет операцию, выполняемую над элементами структуры объекта. Посетитель позволяет определить новую операцию без изменения классов элементов, с которыми он работает. [GoF, p331]

Если вы новичок в разработке шаблонов, краткий обзор доступен по адресу http://www.vincehuston.org/dp/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...