八、好莱坞原则
别调用(打电话给)我们,我们会调用(打电话给)你。
这是一个受好莱坞影响而启发的设计原则。
好莱坞的经典名言:别打电话给我,我会打电话给你。这句话体现了他们科学的管理方法:一个演员要想出演好莱坞大片,要做的不是老是打电话给导演等人一再地推荐自己;而是努力提高自己的专业水平和演技,等到你的能力能够胜任出演好莱坞大片时,导演等爱惜人才的人自然会主动找上门来。这样的管理方法,一来能防止行贿、贪污、腐败;再者,出演的演员都是导演精挑细选的、真正有实力的人。所以好莱坞才得以长盛不衰。
好莱坞原则同样可以给我们一种防止“依赖腐败”的方法。当高层组件依赖低层组件,而低层组件又依赖高层组件,而高层组件又依赖边侧组件,而边侧组件又依赖低层组件时,依赖腐败就发生了。在这种情况下,没有人可以轻易地搞懂系统是如何设计的。
在好莱坞原则之下,我们允许低层组件将自己挂钩到系统上,但是高层组件会决定什么时候和怎样使用这些低层组件。换句话说,高层组件对待低层组件的方式是“别调用我们,我们会调用你”。
遵循好莱坞原则后,只要每个方法尽一切努力去实现自己的说要做的任务就可以,当你能恰到好处地完成我们要的任务时,自然会有高层组件去调用它!否则,低层组件为了让自己被调用,先调用高层组件的方法,再反过来调用自己,这就出现了“环形依赖”!
示例:比如我们设计一个操作数据库的类,把数据库查询的细节放到了子类的方法里来实现。如果子类“不知好歹”,一个劲地强调要查询数据库要先连接数据库,于是在自己的方法里加入判断并连接数据库的代码。这就违背了这个原则,这些细节高层组件之间会去管理,不需要每个子类多此一举。
好莱坞原则就是让每个方法各司其职,把自己该做的任务完成好就可以!工厂方法模式、观察者模式、模板方法模式等都符合好莱坞原则。
为人处世也是如此,领导人知道一步一步该怎么走,并不需要手下的人来指手画脚,反而交领袖该怎么做,这些都是新手普遍会做的事情,愤世嫉俗,一切看不惯的事情都认为是错误的。在做需求分析时也一样,很多设计人员和客户谈到最后,角色换过来了:设计人员说,你这个项目一定要用XX语言做,而一个到底要做个什么东西这是客户自己决定的。就像上级下达命令一样,下级只负责按上级的意愿去完成任务。即使有调度不当,安排不周等不良后果,也是由上级负责。
和其他原则一样,也有不适用的地方,如果你怀才不遇,要推销自己,那自然另当别论。
评论
发表评论