kazu22002の技術覚書

PHPer, Golang, AWS エンジニアの日々

デザインパターン勉強 Facadeパターン

GoFデザインパターンのFacadeパターンを勉強してみます。

Facadeパターン

Facade(ファサード)とは「建物の正面」を意味する。

複雑なクラスの連携を一つのクラスで管理し、呼び出しを簡単にするパターンです。

使い方

予約する場合に、「予約できるか確認して予約する」のクラスでいいのかな。

class ReserveFacade {
    private $check = null;
    private $reserve = null;

    public function __construct(){
        $this->check = new ReserveCheck();
        $this->reserve = new Reserve();
    }

    public function reserve($date){
        // 予約
        if ( ! $this->check->check($date) ){
            return false;
        }

        $this->reserve->reserve($date);
        return true;
    }
}

class ReserveCheck {
    public function check($date){
        // 予約チェック
        $today = now()
        if($date > $today){
            return true;
        }
        return false;
    }
}

class Reserve {
    public function reserve($date){
        // 予約取得 なにかに保存しておく
    }
}

雑記

まとめているクラスがFacadeと呼ばれることになるのかな。

常々デザインパターンを理解しておきたいと考えており、本を買ったりWebで見ていたりしましたが業務で理解して使うレベルには全然できていないため少しずつ手をつけてみたいと思ったので、書いてみます。

DDDを試していると用語が出てくるため、理解しておいたほうが良いものを作れると思い、取り組んでみます。

参考

www.techscore.com

www.ritolab.com