2014-09-04 59 views
1

我正在制作一个计算机系统,我已经分解成几个较小的部分。索引文件到模块实例的交互

从一个给定的经验来看,软件开发中保持系统的小型化至关重要。

为了做到这一点,我正在实现一个服务于特定目的的模块,它本身并不知道系统的其他部分在做什么。 (理想的)

所以这个模块去那里做事情,当一个事件发生在这个模块的实例中时,我希望索引文件知道发生了什么。 我不希望此模块直接与其他模块通信,因为它们不应该彼此通信,从而减少系统内的依赖关系。

现在,我已经使实例和实例完成所有事情, 但是当在此实例中发生事件时,如何将该信息传递给索引文件?

此实例的事件以下列方式实现: the_div.addEventListener('mousedown',this.react_to_mouse_down_function);

在这里它的一个问题是如何最好地将这种情况发生在索引文件中,我可以在索引文件中执行: the_div.addEventListener('click',the_function);

但强制索引文件知道在实例中正在发生的事情,因为 该实例有孩子,每个孩子都有事件检测器,他们的数字可以增长和收缩,上帝知道是什么。 如果索引文件不需要了解模块的实例是如何工作的,那将是最好的。并且因此不需要随着实例的生活而随时产生新的事件监听器。

如何设置索引文件与此实例之间的交互最好?

+1

尝试http://amplifyjs.com/api/pubsub/,其中一个广泛使用的库来实现pub/sub – shershen 2014-09-04 16:45:12

回答

0

我来的解决方案是拥有一个名为'messages'的指定模块,它负责接收事件驱动来自实例的消息。

消息模块的一个实例是全局的,并命名为“消息”。并且每个模块在其中发生事件时检查它是否可以访问全局“imessage”对象,如果它存在并且imessage对象包含与给定事件同名的函数,则它会调用该函数并发送相关信息作为论据。

给定的消息函数现在定义在索引文件中的指定消息模块中,从而减轻了与外界进一步交互的这个模块。 具有此功能的模块现在不需要与任何其他具体模块进行通信。只是索引文件。

它只需要在每个应用此模块的API的API中说明,它的依赖性降低功能如何工作。