情景是这样的,在一个菜单页面里面,菜单的生成由程序员A来实现,响应键盘事件实现菜单的翻滚由B程序员实现,
争执的由头很简单:
1,键盘响应的一个很重要参数需要在菜单加载完毕后去,B程序员自然而言的就在菜单读取参数的回调函数里面加了一句代码
2,过一会,A程序员的代码变了,自然就带来B程序员的功能出错,然后A程序员就说是B程序员的问题,这个参数应该由B程序员代码去执行
3,B程序员当然不干了,如果这个参数要自己去读取,那么每次键盘事件都需要去遍历DOM,这是一个多么无聊的事情啊
4,A/B程序员互不相让,最后只能有A程序员去翻这个代码,在自己的回调函数里面补上...囧
5,结论:程序员都是有洁癖症的 orz...
如果用订阅/发布模式来解决的话,B程序员订阅一个menu-inited事件,A程序员回调函数就发布这个事件,2段代码互不干扰...多么和谐啊
咋一看,为实现一个菜单功能,要搞订阅发布,似乎太蛋疼了...在yui/jquery的大部分组件实现来说 恰恰就是使用HTML事件来通知
对于一个组件来说,为实现某一个"原子"功能的代码都应该是独立存在的,功能之间的互相调用,必须通过HTML事件机制方式通知
更高的一个层次来说,组件和组件的通讯,订阅/发布自然是最佳选择
另外:
程序洁癖症的重度患者是非常烦躁自己的参数被别人修改的,往往只提供了get方法而无set方法,但是在js实现来说,隐私是很难保护的...因为木有私有参数一说
但自从“sandbox”概念横空出世,一切都改变了,"sandbox"为什么那么牛,你懂的。。。
jquery的订阅和发布插件
http://plugins.jquery.com/project/jQuerySubscribe