Coupling Basics : Dependency Direction

Inversion of Control Principle

The Hollywood Principle is another name for Inversion of Control Principle. Hollywood Principle:

Don't call us, we'll call you.

Martin Fowler says:

IoC is about who initiates the call. If your code initiates a call, it is not IoC, if the container/system/library calls back into code that you provided it, it is IoC.

Example #1 for Hollywood Principle:

class Car
  def initialize(name)
    @name = name

  def to_s
    "My name is #{@name}"

c ='Tesla')

print c

This prints: My name is Tesla

We did not explicitly call tos in our code. The tos method is called by print.

Example #2 for Hollywood Principle:

In a Rails app:

def new
  @user =

You implement the action in the controller, the framework calls this method. You as a programmer never call the new action in your code.

Why Apply Inversion of Control?

Inversion of Control principle helps us to achieve loose coupling thereby allowing us to achieve re-use in our projects. It is one of the ways to achieve Context Independence.


In this article you learned about the Inversion of Control Principle and examples illustrating their use. The most important take away is that Inversion of Control is about DIRECTION of messages and it can be used to achieve Context Independence.

Related Articles

Create your own user feedback survey