真的需要“继承”吗-清华大学计算机考研经验贴.

时间:2024-07-15 10:06:16
【文件属性】:

文件名称:真的需要“继承”吗-清华大学计算机考研经验贴.

文件大小:8.5MB

文件格式:PDF

更新时间:2024-07-15 10:06:16

javasc

11.6 好莱坞原则 学习完模板方法模式之后,我们要引入一个新的设计原则——著名的“好莱坞原则”。 好莱坞无疑是演员的天堂,但好莱坞也有很多找不到工作的新人演员,许多新人演员在好莱 坞把简历递给演艺公司之后就只有回家等待电话。有时候该演员等得不耐烦了,给演艺公司打电 话询问情况,演艺公司往往这样回答:“不要来找我,我会给你打电话。” 在设计中,这样的规则就称为好莱坞原则。在这一原则的指导下,我们允许底层组件将自己 挂钩到高层组件中,而高层组件会决定什么时候、以何种方式去使用这些底层组件,高层组件对 待底层组件的方式,跟演艺公司对待新人演员一样,都是“别调用我们,我们会调用你”。 模板方法模式是好莱坞原则的一个典型使用场景,它与好莱坞原则的联系非常明显,当我们 用模板方法模式编写一个程序时,就意味着子类放弃了对自己的控制权,而是改为父类通知子类, 哪些方法应该在什么时候被调用。作为子类,只负责提供一些设计上的细节。 除此之外,好莱坞原则还常常应用于其他模式和场景,例如发布订阅模式和回调函数。  发布—订阅模式 在发布—订阅模式中,发布者会把消息推送给订阅者,这取代了原先不断去 fetch 消息的形式。 例如假设我们乘坐出租车去一个不了解的地方,除了每过 5 秒钟就问司机“是否到达目的地”之 外,还可以在车上美美地睡上一觉,然后跟司机说好,等目的地到了就叫醒你。这也相当于好莱 坞原则中提到的“别调用我们,我们会调用你”。  回调函数 在 ajax 异步请求中,由于不知道请求返回的具体时间,而通过轮询去判断是否返回数据,这 显然是不理智的行为。所以我们通常会把接下来的操作放在回调函数中,传入发起 ajax 异步请求 的函数。当数据返回之后,这个回调函数才被执行,这也是好莱坞原则的一种体现。把需要执行 的操作封装在回调函数里,然后把主动权交给另外一个函数。至于回调函数什么时候被执行,则 是另外一个函数控制的。 11.7 真的需要“继承”吗 模板方法模式是基于继承的一种设计模式,父类封装了子类的算法框架和方法的执行顺序, 子类继承父类之后,父类通知子类执行这些方法,好莱坞原则很好地诠释了这种设计技巧,即高 图灵社区会员 balabala233 专享 尊重版权


网友评论