教室解耦软件组件的示例

时间:2015-12-16 20:41:49

标签: javascript testing

我试图掌握设计组件的高度去耦,低内聚模式。

我将大型系统的每个功能设计为Web组件 - 类似于"模块"的概念。在设计模式中,例如Export-PDF功能,Boards功能等。

问题是某些组件依赖于它们 - 它们调用每个组件的方法,可以访问它们的公共变量等。

由于每个组件都需要单独测试,因此必须高度去耦,必须与其他组件具有较低的相互依赖性,哪些课堂示例可以使这些组件相互脱离?

考虑这种情况:

  • 用户按下CTRL + P
  • 键绑定由快捷键组件
  • 处理
  • 快捷键组件调用 Export-PDF组件 .print()方法。

我的一些解决方案:

使用事件

每个组件都会调度event,然后在另一个组件中捕获,例如使用this.addEventListener(..

优点:

  • 允许单独进行测试,因为没有直接调用其他组件的方法。

缺点:

  • 会导致许多可能影响性能的调度/侦听器。
  • 仍有很多耦合,它有可能无法管理。

使用直接调用其他组件的方法

每个组件只是直接调用其他组件方法,例如exportPDF.printPages()

优点:

  • 这是最简单的。

缺点:

  • 每个组件彼此相互依赖。
  • 组件不能单独测试。

还有哪些其他解耦组件的方法?

为了记录,感兴趣的语言是JavaScript。 虽然概念和方法可能适用于许多编程语言,但我特别是使用JavaScript所具有的功能来讨论问题的概念和解决方案。

0 个答案:

没有答案