我不明白好莱坞原则

I don't understand the Hollywood Principle

对不起我的英语。

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

谁能用最简单的术语给我解释一下?

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

谢谢。

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

意思是高层模块应该调用低层模块。

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

实施

可以使用事件或回调轻松实现好莱坞原则。

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

另一种利用好莱坞原则的设计模式是模板模式。 在模板模式中,超级 class 定义了控制流。 然后子 classes 实现抽象方法,或 plug-in 代码。

框架也是好莱坞原则的著名例子。 在框架中,我们注入我们的代码。我们可以子 class 或 plug-in 我们的 classes,框架调用它们来完成工作。

例子

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

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

如果我们想要re-render我们的页面,Page不应该调用Document对象。 对于 Document 中的任何更改,它应该调用 Page 到 re-render 它。 Document 可以使用事件或回调将 Page 个对象通知给 re-render。

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