我有一个SearchForm对象,它包含Tag对象的集合。当用户单击Tag对象时,它会突出显示自身并触发事件。 SearchForm类侦听此事件并提交自身。 Tag对象与SearchForm无关。
到目前为止,非常好。
现在,某些标签在点击时必须激活其他标签。每个标签都知道它必须激活的其他标签。但为了做到这一点,它必须知道搜索表所拥有的整个标签集合。
如果Tag实例(=集合项)具有对所有其他标签(=集合)的完整列表的引用,它会“糟糕”吗?
当然,这样的事情是可行的:
Tag is clicked -> SearchForm is notified -> checks if the clicked tag must activate some others -> SearchForm activates the needed Tags itself
。
但这似乎有点尴尬,不是吗?
答案 0 :(得分:4)
这听起来不像是有什么问题。如果集合中的某个项目需要了解集合中的其他项目,那么它也可以完全了解整个集合。
大多数GUI框架和可能与您合作的DOM本身都有集合项,可以了解它们所处的集合(在DOM中,在任何元素上,您可以调用parentElement
来获取它的父母)。
一般来说,如果对象不“知道”超过他们需要的最小值,以减少耦合,这是很好的。但是如果一个对象确实需要了解某些东西,那么给它一个参考并不是不合理的。
答案 1 :(得分:1)
集合中的项目知道其行踪并不常见......想想链接列表或树木。如果您不希望标记知道整个列表,则可以仅添加对其相关标记的引用。
答案 2 :(得分:0)