以下の内容はhttps://kazu22002.hatenablog.com/entry/2020/09/24/080000より取得しました。


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

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

FactoryMethodパターン

インスタンスの作り方をスーパークラスで定め、具体的な処理をサブクラスで行うパターンです。

より柔軟な処理をするための工夫になります。

使い方

interface Position {
    public function horizontal();
    public function vertical();
}
class LeftPosition implements Position {
    public function horizontal(){
        return 10;
    }
    public function vertical(){
        return 10;
    }
}
class RightPosition implements Position {
    public function horizontal(){
        return 100;
    }
    public function vertical(){
        return 10;
    }
}


class Report {
    public abstract function header($position);
    protected Position createPosition(){
        return new LeftPosition();
    }
    public function output(){
        $app = this.createPosition();
        this.header($app);
    }
}

class Attendance extends Report {
    public function header($position);
        echo "ヘッダー";
    }
}

class Statistic extends Report {
    protected Position createPosition(){
        return new RightPosition();
    }
    public function header($position){
        echo "統計";
    }
}

位置情報を追加してみました。

雑記

factoryと名前のつくパターンがいくつかあり、パターンの違いを理解していないためどのパターンを利用すればいいのか考えることが多いので再学習が必要と思ったパターンです。

TemplateMethodパターンをさらに柔軟にする使い方ができるパターンだと思いました。

デザインパターンの際にクラス図を載せないとわかりづらいですね。探しておきます。

参考

www.techscore.com




以上の内容はhttps://kazu22002.hatenablog.com/entry/2020/09/24/080000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14