适用于其他对象集合的类的设计模式?

时间:2009-10-26 18:17:26

标签: language-agnostic design-patterns oop

我有一个可以容纳1-n UserGroup模型的用户模型,每个模型都包含有关用户与特定组关系的数据(例如,如果他们是组的管理员,当他们加入组时,等)。

我想提供一些辅助方法,如isGroupUser()和isGroupAdmin(),它们可以处理用户模型中存储的整个UserGroup模型集。现在这些方法都在User模型中,但它们只是模型大小的两倍。

将UserGroup模型上运行的代码推送到自己的类中是否有意义?因此,User模型将包含此“接口”类的单个实例,该类现在还包含要处理的UserGroup模型。我觉得这样可以保持相关代码的良好分离,并且用户模型不会变得势不可挡。

另外,这种东西有设计模式吗?看起来像是在一组其他对象上运行的类很常见。

感谢您的见解!

2 个答案:

答案 0 :(得分:1)

迭代器:提供一种顺序访问聚合对象元素的方法,而不会暴露其基础表示。 [GoF,p257]

访问者:表示要对对象结构的元素执行的操作。访问者允许您定义新操作,而无需更改其操作的元素的类。 [GoF,p331]

如果您不熟悉设计模式,可以在http://www.vincehuston.org/dp/

处查看快速概述

答案 1 :(得分:1)

我认为这样做的另一大好处就是将所有UserAccessControl或UserPermissions推送到一个漂亮的可重用设置或对象中。