我们正在开发门户环境.在我们的一个页面上,我们有两个portlet.当在一个portlet上发生某些操作时,我们必须最小化其他portlet,反之亦然.因此我们认为这是一个适合我们可以使用Dojo的发布/订阅模型的情况.但是我有点困惑,如果我需要使用不同的主题[一个在Portlet A上发生某些动作时,第二个主题是在PortletB上发生某些动作时]或一个主题[类似于最小化].有人可以指导我.
这完全取决于您,取决于您的需求.
主题是自由格式文本,因此您可以使用您喜欢的任何文本格式进行排列.
我自己的经历是将一个主题视为一个"事件".因此,一个主题,一个事件.
我的经验也是在与事件相同的系统中实现"命令"是非常有益的 - 所以你有一个通用的命令/事件系统.
事件(因此主题)不必与您的portlet相对应.例如,一个portlet可以有多个事件(如果它们有意义),或者一个事件可以由多个portlet共享(用于共享功能或用于跨portlet通信).
参数和数据可以与事件(即主题)一起作为参数传递.
现在,我学到的一个好方法就是拥有"子主题" - 即当事物想要订阅特定事件实例时,以父主题为前缀的主题.
示例:假设我们有一个名为"/ portlets/showhide"的事件,它在显示或隐藏时由任何portlet发布,以及portlet的id和指示是显示还是隐藏的布尔变量.
现在,假设一个portlet还会在显示时发布名为"/ portlets/showhide/{id}"(带有true/false参数)和"/ portlets/showhide/{id}/show"(无参数)的主题,以及通用的"/ portlets/showhide"主题(事件).
现在假设一些处理程序对象真的只对隐藏"xyz"portlet感兴趣.它不必订阅"/ portlets/showhide"并监听它不感兴趣的其他portlet的所有事件.它可以简单地订阅"/ portlets/showhide/xyz/hide".当大型系统中的订阅数量增加时,这种优化可以非常方便.