デザインパターン-Facade

Facadeパターンとは

Facade(ファサード)パターンは、複雑な内部処理(認証処理やデータベース処理など)を隠蔽し、利用者にシンプルなインタフェースを提供するパターンです。複雑な関連性のあるクラス群やサブシステムなどの機能を呼び出す「窓口=Facade」を用意することで、ユーザに意識させないという目的もあります。

「Facade」は、「建物の正面」という意味です。


構成要素

  • Facade(正面・窓口)
    • 複雑な処理構成に対するシンプルなインタフェースを提供します。
  • Module(処理)
  • 「Facade」から呼出されて処理を行いますが、その事は意識しません。
  • Client(利用者)
    • 「Facade」が提供するメソッドを呼出し処理を行います。

rubyによるFacadeパターンの実装


#!/usr/bin/env ruby

# module(処理)
class Database
  def self.get_data(id)
    # データベース処理
  end
end

# module(処理)
class HtmlCompose
  def self.create(data)
    # HTML記述処理
  end
end

# Facade(正面・窓口)
# ページ名を指定すれば、DBアクセスやHTML記述を行う。
class PageView
  def PageView.viewer(id)
    data = Database.get_data(id)
    page = HtmlCompose.create(data)
  end
end

PageView.viewer("page_id")

関連ページ