かきノート

Laravel の「ファサード」と、デザインパターンの「ファサード」は、単語が同じなだけで全然別のもの?

November 1, 2020 • ☕️ 4 min read

Laravel 用語の「ファサード(Validator とか Cache とか)」って、デザインパターンのファサードと全然別物?(用語がかぶってるだけ?)と感じて色々調べる程ピンと来なかったんで、整理してみた。

ファサード : Laravel 公式

https://laravel.com/docs/8.x/facades#introduction

Facades provide a “static” interface to classes that are available in the application’s service container.

ファサード:参考文献『オブジェクト思考における再利用のための デザインパターン 改訂版』

https://www.amazon.co.jp/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E5%86%8D%E5%88%A9%E7%94%A8%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3-%E3%82%A8%E3%83%AA%E3%83%83%E3%82%AF-%E3%82%AC%E3%83%B3%E3%83%9E/dp/4797311126

サブシステム内に存在する複数のインターフェースに1つの統一インターフェースを与える。 Facade パターンはサブシステムの利用を容易にするための高レベルインターフェースを定義する。

同じもの?

同じもの・・・とは言えない気がする。
Laravel の場合、静的メソッドを提供しているだけ(使用者の意識もそんな感じだと思う)これを「ファサードパターンだね」とすんなり受け入れる人の方が少ないんじゃないのか? という感覚。
(裏側では同じ事をやっていたとしても)

感覚的にはユーティリティ呼び出しているだけだったんで、「どの辺が Facade?」という感覚が先行していた。

というか、Facade で提供されてる機能の中身を見ないと、絶対にそういう感覚になるよな。冷静に考えると。

もうちょい考えてみると、使う側は Facade パターンを使ってるかどうかなんて知ったこっちゃないんで、やっぱりそこをユーザに意識させる必要はなかったのでは ?(Laravel 側)

自分も実装する時は、わざわざ「Facade 使ってます」なんて書かないし。
(内部ロジックにて、メソッド名に含める事はあるけど)


Relative Posts:

Laravel を使ったオープンソースの test ディレクトリ構成を見てみよう!

November 21, 2020

Laravel Debugbar を使った時に、artisan route:list でルーティング情報を表示すると、不要な情報が出てくる

June 4, 2020

福岡の物流エンジニアが、七転び八起きしたあと九回転び、寝っ転がったまま何かやってる事を垂れ流しているブログ

RotateLinkImg-iconRotateLinkImg-iconRotateLinkImg-iconRotateLinkImg-icon