November 1, 2020 • ☕️ 4 min read
Laravel 用語の「ファサード(Validator とか Cache とか)」って、デザインパターンのファサードと全然別物?(用語がかぶってるだけ?)と感じて色々調べる程ピンと来なかったんで、整理してみた。
https://laravel.com/docs/8.x/facades#introduction
Facades provide a “static” interface to classes that are available in the application’s service container.
サブシステム内に存在する複数のインターフェースに1つの統一インターフェースを与える。 Facade パターンはサブシステムの利用を容易にするための高レベルインターフェースを定義する。
同じもの・・・とは言えない気がする。
Laravel の場合、静的メソッドを提供しているだけ(使用者の意識もそんな感じだと思う)これを「ファサードパターンだね」とすんなり受け入れる人の方が少ないんじゃないのか? という感覚。
(裏側では同じ事をやっていたとしても)
感覚的にはユーティリティ呼び出しているだけだったんで、「どの辺が Facade?」という感覚が先行していた。
というか、Facade で提供されてる機能の中身を見ないと、絶対にそういう感覚になるよな。冷静に考えると。
もうちょい考えてみると、使う側は Facade パターンを使ってるかどうかなんて知ったこっちゃないんで、やっぱりそこをユーザに意識させる必要はなかったのでは ?(Laravel 側)
自分も実装する時は、わざわざ「Facade 使ってます」なんて書かないし。
(内部ロジックにて、メソッド名に含める事はあるけど)