我正在创建一个Javascript Tab库。实际上,它已经开发出来并且运行良好。但它应该重写以修复我们在使用它时发现的一些潜在的烦恼和怪癖。无论如何,这是当前的模型。
当前模型有一个TabSet对象,它包含选项卡库的主要功能:addTab,removeTab,showTab,hideTab和相关的历史记录功能。然后有一个Tab对象,其中包含与选项卡相关的数据/方法:showThrobber,hideThrobber,reload,以及为选项卡创建实际的DOM元素。现在,你可以看到这有点脱节。 TabSet句柄显示选项卡并隐藏选项卡,Tab键处理重新加载选项卡。
以下是问题:组织此选项卡库的方法的最佳方法是什么。我们遇到的问题是,当前模型虽然脱节但是有意义。 TabSet确实显示了一个选项卡,隐藏了一个选项卡并删除了一个选项卡。但Tab本身确实被显示,隐藏和删除。实际上,所有函数都适用于任何一个类:TabSet或Tab。
让我们用一个类比。当有人需要说话时,每个人都需要停止说话。有两种方法可以实现。 1)领导者(TabSet)告诉大家停止说话然后告诉说话者开始说话。 2)发言者告诉大家闭嘴并开始说话。让控制器告诉其他选项卡隐藏并告诉新Tab显示是有意义的。但是让Tab告诉所有其他标签隐藏然后展示自己也是有道理的。
你有什么想法?
答案 0 :(得分:2)
就个人而言,我设计它以便Tab只知道自己和管理它的TabSet。它不会引用其他标签。
我将show()
方法放在Tab上;在内部,它会要求TabSet隐藏所有其他标签并显示自己。
我假设必须始终显示一个标签,因此使用公共方法隐藏单个标签是没有意义的。
该设计背后的想法是您需要担心的错误检查较少。如果您的TabSet对象具有showTab(tab)
方法,则必须检查以确保传入的选项卡实际上是该集合中的一个选项卡。
通常,当我设计API时,我的首要任务是难以传递无效输入。