📽️

ハリウッドの原則の具体例

2023/08/18に公開

オブジェクト指向でなぜ作るのか?のハリウッドの原則について具体例が欲しかったので、調査した。その時のメモ

ハリウッドの原則とは

「私を呼び出すな、必要なら私が呼び出す」
という原則で、オブジェクト指向プログラムやフレームワークの設計において話に上がるもの。

フレームワークを用いて、アプリケーションを実装する時
アプリケーションの個別の実装(自分が実装する場所)からフレームワークを呼び出すのはダメだということ。

# 基底クラス(フレームワークの部分)
class AbstractMovieFestival
  # テンプレートメソッド
  def start
    prepare_screen
    play_movie
    clean_screen
  end

  private

  def prepare_screen
    puts "Screen is prepared!"
  end

  # ユーザーがオーバーライドするためのフックメソッド
  def play_movie
    raise NotImplementedError, "Subclasses must implement 'play_movie'"
  end

  def clean_screen
    puts "Screen is cleaned!"
  end
end

# 実装者のクラス、ここで親クラスのメソッドを呼んではダメ
class MyMovieFestival < AbstractMovieFestival
  def play_movie
    puts "Playing my favorite movie!"
  end
end

# 使用例
festival = MyMovieFestival.new
festival.start

参考
オブジェクト指向でなぜ作るのか? 第3版

Discussion