【问题标题】:I don't understand the Hollywood Principle我不懂好莱坞原则
【发布时间】:2020-10-13 11:00:26
【问题描述】:

对不起我的英语。

我在阅读“Head First Design Patterns”一书时偶然发现了这个原则。我看到其他人在 StackOverFlow 上问同样的问题和一些文章,但我仍然不明白。

谁能用最简单的方式给我解释一下?

我读过的大部分示例都假设读者已经使用了支持 IoC 的框架,例如 Spring。我以前从未使用过这些框架,因为我还是个初学者。

谢谢。

【问题讨论】:

  • 这本书有没有提到“不要打电话给我们,我们会打电话给你”这句话?
  • @Kevin Anderson 是的!
  • “好莱坞”的联系是“不要打电话给我们;我们会打电话给你”据称是演艺界使用的标准礼貌但明确无误的解雇短语。这是一个标准的笑话:有抱负的演员走上舞台,自我介绍并开始试镜;十秒钟后,导演插话道:“谢谢,就这样。不要给我们打电话;我们会打电话给你的。下一个!”。

标签: java inversion-of-control


【解决方案1】:

好莱坞原则 - 这是什么意思?

表示高层模块应该调用低层模块。

通过遵循这个原则,我们的代码往往是松散耦合的。 松散耦合的代码意味着我们没有对其他类或对象的不必要引用。它有助于软件的可维护性。

实施

好莱坞原则可以很容易地使用事件或回调来实现。

观察者模式是一个众所周知的实现好莱坞原则的例子。

另一个利用好莱坞原则的设计模式是模板模式。 在模板模式中,超类定义了控制流。 然后子类实现抽象方法,或者插入代码。

框架也是好莱坞原则的著名例子。 在框架中,我们注入我们的代码。我们可以子类化或插入我们的类,由框架调用以完成工作。

示例

假设我们正在创建一个文字处理器应用程序。我们将有两个类,DocumentPage

这里,Document 是高级模块,Page 是低级模块。 这是因为Document 可以有一个或多个Page

如果我们想重新渲染我们的页面,Page 不应该调用Document 对象。 对于Document 的任何更改,它应该调用Page 重新渲染它。 Document 可以通知 Page 对象使用事件或回调重新渲染。

另外,如果我们这里遵循依赖倒置原则,Document不应该直接依赖Page,而是使用一些抽象。

【讨论】:

猜你喜欢
  • 2017-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-09
  • 1970-01-01
  • 1970-01-01
  • 2021-02-04
相关资源
最近更新 更多