因此,我正在为一个重大JavaScript的个人项目做一个重要因素,旨在更好地遵循面向对象的设计原则。我对更典型的面向对象语言(C#,C ++,Java)中的OOP很有经验,但对于编写符合OO设计的JavaScript来说还是一个新手。
我想知道什么是一种巧妙的方法来构建反映相互交互的DOM元素的对象。
这是我的问题:
我有一个包含三个主要元素的单页Web应用程序:搜索表单,图表和表格。以前,这些元素是通过搜索表单中“提交”按钮事件按顺序调用的“绘图”方法处理的。 submit事件将调用返回数据的搜索方法,然后调用drawTable(data)
和drawGraph(data)
,它从返回的数据中提取元素。
我试图重新考虑这一点,以便更好地遵守OO原则。我正在创建一个封装数据结构的drawTable()
类,而不是使用table()
函数,以及一个基于其成员数据绘制元素的.draw()
方法。
所有这些似乎都是对可读性和设计的直接改进,并允许我使用Controller()
类型类来实例化和操作页面上的对象。然而,我正在努力的是如何将Form()
干净地整合到这种设计模式中。表单包含一个提交按钮。现在,由于所有函数都在同一(全局)范围内,submit()
事件可以直接调用drawTable()
和drawGraph()
。但是现在,由于Form.submit()
无法访问Graph.draw()
方法,因此我不确定如何干净地设计此方法。将提交事件放在父Controller()
中可以解决此问题,但似乎违反了我希望保留的Form()
的封装。
是否有一种很好的方法来构建这些保留此功能的类但仍然坚持良好的面向对象设计?