📽️
ハリウッドの原則の具体例
オブジェクト指向でなぜ作るのか?のハリウッドの原則について具体例が欲しかったので、調査した。その時のメモ
ハリウッドの原則とは
「私を呼び出すな、必要なら私が呼び出す」
という原則で、オブジェクト指向プログラムやフレームワークの設計において話に上がるもの。
フレームワークを用いて、アプリケーションを実装する時
アプリケーションの個別の実装(自分が実装する場所)からフレームワークを呼び出すのはダメだということ。
# 基底クラス(フレームワークの部分)
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
Discussion