ものわかりの悪い自分でも理解できるように、なるべくシンプルな言葉で説明したデザインパターンの忘備録です。
デザインパターン勉強中のため気づいたときに追加していこうと思います。
#####ストラテジーパターン
アルゴリズムが変化する部分をクラス化して交換できるようにするパターン
たとえば、switch文で、挙動を切り替えるようなとき、コード量が多いとき、シンプルにすることができる。
イメージとしては、ゲームでいうと [呼び出す側]は、むずかしい・かんたん モード選択画面、アルゴA、アルゴBがそれぞれ、むずかしい・かんたんの処理。
#####テンプレートメソッドパターン
共通部分を炙り出してテンプレート(型)にする。多分以前投稿したような気がする。
共通部分を抽象クラスにして、異なる部分は違うインスタンスを生成し挙動を変える。
焼き鳥で表現すると、しお味のもも とたれのもも があったとき、共通の鶏肉[もも]や焼くという動作を抽象クラスにして
最後やきあがったときに、'塩'か'たれ'か味付けの処理をわけるような実装のパターン。
デザインパターンという大々的なものでなく、一般的なオブジェクト指向では必ず使われてるものな気がします。
#####シングルトンパターン
恐らく一番最初に聞く有名なやつ。オブジェクトのインスタンス化を1つに限定し、複数作らせないようにする。実装方法はいろいろある。
(複数できたようみえていても、結局は同じところを参照しているものを含む)
シングルトンクラス |
---|
- メンバ変数 |
+ インスタンス獲得 |
- 処理 |
最も基本的な実装方法
//直接Qiitaのエディタに書いただけなので後日確認します。。。
public class Singleton {
public:
//staticによってクラス初期化時に唯一のインスタンスが生成
static Singleton& getInstance(){
static Singleton myself;
return myself;
}
//外部からは生成できないようにprivate
private:
Singleton(){}
}