LoginSignup
140
130

More than 5 years have passed since last update.

各デザインパターンの「使いどころ」を一言でまとめてみた

Last updated at Posted at 2018-10-26

はじめに

各デザインパターンが「どんな場合に有用なのか」の一覧があったら便利かと思いまとめてみました。GoFの23パターンの他に「Game Programming Patterns」のパターンも掲載してます。

生成に関するパターン

パターン名 使いどころ
Abstract Factory XならA,B,Cが、YならD,E,Fが欲しい、みたいなとき
Builder オブジェクトの生成ステップが複雑なとき
Factory Method どの具象クラスを使うのか隠したいとき
Prototype Clone()したいとき
Singleton インスタンスが2つ以上あってほしくないとき

構造に関するパターン

パターン名 使いどころ
Adapter ごちゃごちゃしてる表面を綺麗にしたいとき
Bridge 継承地獄をいい感じに分割したいとき
Composite フォルダの中にファイルとフォルダどちらも置きたい、みたいなとき
Decorator インスタンスに動的に機能を追加したいとき
Facade アクセスするクラスを1つにまとめたいとき
Flyweight 数種類のオブジェクトが大量にあるとき
Proxy オブジェクトを仮置きしたいとき

振る舞いに関するパターン

パターン名 使いどころ
Chain of Responsibility 自分が担当なら処理するけど違ったら後続に流す、みたいなとき
Command イベントに対するアクションを入れ替えたいとき
Interpreter 構文木をつくるとき
Iterator ForEachしたいとき
Mediator MVCのCが色々と取りもつ感じをやりたいとき
Memento Undo/Redoしたいとき
Observer イベント発火に対するアクション実行を発火側から分離したいとき
State 状態ごとに処理をまるっと切りかえたい時
Stratgy アルゴリズム的な処理を入れ替えたいとき
Template Method 一連の処理の流れが決まってて具体的には色々パターンがあるとき
Visitor ダブルディスパッチしたいとき

GPP/シーケンスのパターン

パターン名 使いどころ
Double Buffer Screen Tearingを回避したいとき
Game Loop ゲームエンジンを作りたいとき
Update Method 毎フレーム更新したいとき

GPP/ビヘイビアのパターン

パターン名 使いどころ
Bytecode オレオレスクリプティング言語を作りたいとき
Subclass Sandbox 共通する処理は多いけど処理の順番は各サブクラスが決めたいとき
Type Object JSONなどを元に1クラスで複数の種族とかを生成したいとき

GPP/分離のパターン

パターン名 使いどころ
Component 細かい単位で柔軟に機能を追加したいとき
Event Queue イベントに対するアクション実行タイミングを中央管理したいとき
Service Locator 柔軟なSingletonが欲しいとき

GPP/最適化のパターン

パターン名 使いどころ
Data Locality 高速で配列をまわしたいとき
Dirty Flag つど計算すると重くなるとき
Object Pool 生成の重いオブジェクトが何度も必要なとき
Spatial Partition 効率的に衝突判定したいとき

P.S.

すべて「一言で」まとめようと頑張ったのですが、日本語って難しいですね。細かなことでも構いませんので、気づいたことなど気軽にコメントください:bow_tone1:

140
130
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
140
130