2009-10-26 4 views
3

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

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

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

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

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

ответ

1

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

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

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

1

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

Смежные вопросы