好吧,这可能是一个奇怪的问题,也许我正走错方向,但这是我的问题:

我有一个SearchForm对象,它包含Tag对象的集合。当用户单击Tag对象时,它会突出显示自身并触发事件。 SearchForm类侦听此事件并提交自身。 Tag对象与SearchForm无关。

到目前为止,非常好。

现在,某些标签在点击时必须激活其他标签。每个标签都知道它必须激活的其他标签。但为了做到这一点,它必须知道搜索表所拥有的整个标签集合。

它会“糟糕”吗?如果Tag实例(=集合项)具有对所有其他标签(=集合)的完整列表的引用?

当然,这样的事情是可行的:

点击标记 - > SearchForm会收到通知 - >检查点击的标签是否必须激活其他标签 - > SearchForm激活所需的标签本身

但这似乎有点尴尬,不是吗?

有帮助吗?

解决方案

这听起来不像是有什么问题。如果集合中的某个项目需要了解集合中的其他项目,那么它也可以完全了解整个集合。

大多数GUI框架和可能正在使用的DOM本身都有集合项,可以了解它们所在的集合(在DOM中,在任何元素上,您可以调用 parentElement 得到它的父母。)

一般来说,如果物体不“知道”,那就好了。大约超过他们需要的最小值,以减少耦合。但是如果一个对象确实需要了解某些东西,那么给它一个参考并不是不合理的。

其他提示

集合中的项目知道其行踪并不常见......想想链接列表或树木。如果您不希望标记知道整个列表,则可以仅添加对其相关标记的引用。

我认为这只是一个观察者设计模式

我不知道javascript,但我想它应该是可行的。

在任何情况下都要避免对列表进行硬编码。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top