2019/09/30
おはようございます。腰の痛みが本格化してきました宇賀神です。
今日はいわゆるGoF本にて紹介されているデザインパターンのお話。
GoF本で紹介されるデザインパターンは23種類あります。自分への備忘録も兼ねて記事にしたいなーと思った次第。
本当は全部について詳しく解説していきたいのですが、多い。なんせパターンの数が多い。
そこで、開き直って全部のパターンを1行だけで解説していきたいと思います。
ここからは各パターンについて解説します。
ループ用クラスを作る。
ラッパークラスを挟んで使いやすくする。
抽象クラスで形だけ決めてサブクラスで実装する。
Template Method パターンをインスタンスの生成に適用する。
コンストラクタをプライベートにしてインスタンスを1つしか作れなくする。
インスタンスを原型からクローンして作る。
パーツごとにクラスを作って分解する。
大規模な Factory Method。
「機能」と「実装」でクラスを分ける
サブクラス単位で実装を切り替える。ガンガンいこうぜ。
枝葉の上に抽象クラス被せて同一視する。ファイルシステム。
飾り付けをクラスで切り替える。ストラテジーに近い。
Iteratorで回しながら個別に処理する。
クラスごとの役割に徹してたらい回しにする。
窓口を作って呼び出すクラスとメソッドを1つに絞る。
状態管理(など)を1つのクラスに任せる
通知を受けてアクションを起こす観察者(Observer)を立てる。
状態を保存するクラスを作る。undoやredoがやりやすい。
「昼」や「夜」などの状態ごとにクラスを作る。コード内の分岐を減らせる。
共有できるものはなるべく共有する。
使うクラスと使われるクラスの間に1つクラスを挟んで使いやすくする。
「命令」の内容と「実装」の内容を分離する。
正規表現とか文法の異なる言語を共通の文法で使えるようにする。
以上、デザインパターン1行解説でした。
こうしてみても、正直理解しきったとは言い難い感じだなーと思います。
もちろんこれだって万能ではないだろうし、このあたりをやんわりと頭に入れながら、あとはひたすら実戦で磨いていくのがいいんだろうなぁ。
また更新します〜〜