收集项目知道收集它的集合 - 这闻到了吗?
-
06-07-2019 - |
题
好吧,这可能是一个奇怪的问题,也许我正走错方向,但这是我的问题:
我有一个SearchForm对象,它包含Tag对象的集合。当用户单击Tag对象时,它会突出显示自身并触发事件。 SearchForm类侦听此事件并提交自身。 Tag对象与SearchForm无关。
到目前为止,非常好。
现在,某些标签在点击时必须激活其他标签。每个标签都知道它必须激活的其他标签。但为了做到这一点,它必须知道搜索表所拥有的整个标签集合。
它会“糟糕”吗?如果Tag实例(=集合项)具有对所有其他标签(=集合)的完整列表的引用?
当然,这样的事情是可行的:
点击标记 - > SearchForm会收到通知 - >检查点击的标签是否必须激活其他标签 - > SearchForm激活所需的标签本身
。
但这似乎有点尴尬,不是吗?
解决方案
这听起来不像是有什么问题。如果集合中的某个项目需要了解集合中的其他项目,那么它也可以完全了解整个集合。
大多数GUI框架和可能正在使用的DOM本身都有集合项,可以了解它们所在的集合(在DOM中,在任何元素上,您可以调用 parentElement
得到它的父母。)
一般来说,如果物体不“知道”,那就好了。大约超过他们需要的最小值,以减少耦合。但是如果一个对象确实需要了解某些东西,那么给它一个参考并不是不合理的。
其他提示
集合中的项目知道其行踪并不常见......想想链接列表或树木。如果您不希望标记知道整个列表,则可以仅添加对其相关标记的引用。
不隶属于 StackOverflow