##はじめに##
初投稿です。
掌田 津耶乃さん著「PHPフレームワークLaravel入門」を学習中、しばしば意味の分からないワードが出てきていました。
「ファサード」
ワイ「なんだお前(思考停止)」
調べてみると、どうもLaravelに限った用語ではないそうなので、自分なりにまとめてみます。
記事を書く練習にもなるし。
##ファサードの語源##
語源というかそもそもの意味ですが、建築用語で「建築物の正面部分(デザイン)」を意味するフランス語だそうです。
建物の顔、入り口部分といった感じのイメージですかね。
確かに、フランスの古い建築物をググって調べてみると、正面からの見栄えが重視されてる気がします。
##ITにおいてのファサード##
正確には「ファサードパターン(Facade pattern)」と呼ばれており、コンピュータソフトウェアのデザインパターンの一つとのこと。
デザインパターンとは、wikiに乗ってる情報をまとめると、経験則に基づく典型的なパターンに名前を付け、再利用しやすいようにカタログ化した物、という理解で良いと思います。
話を戻すと、ファサード・パターンとは、単純な操作だけを持ったFacadeクラスを実装し、(メインシステムと異なる)サブシステムを結びつける事を言います。
建物(サブシステム)に対し正面玄関(ファサード)を実装するイメージですね。
これにより、サブシステムの詳細を知らなくてもファサードからサブシステムの機能を呼び出せます。
##ファサードパターンのメリット##
ファサードを用いることで、ユーザーが必要な機能のみに絞ってサブクラスから呼び出すことができます。
また、ユーザーはサブクラスの詳細を知る必要がないため、サブクラスの実装から解放されます。
要はサブクラスの中身は知らないけど、ファサードがあるから簡単に使えるよねって所でしょうか。
この辺は感覚としては分かりますが、言語化するのが難しいです。
ユーザー毎に使用するクラスを絞れるというのは明確なメリットだと思います。
ファサードクラスを見るだけでよく使う機能が分かりますし。
ちなみに、ファサードパターンはサブクラスの機能を直接呼び出すことを特に制限はしていません。
これは少し意外でした。
必要ならファサードで定義されていない機能も使っていいよってことですね。