2019/09/30

23のデザインパターンを全部一行で説明していく

はじめに

おはようございます。腰の痛みが本格化してきました宇賀神です。
今日はいわゆるGoF本にて紹介されているデザインパターンのお話。

What is

GoF本で紹介されるデザインパターンは23種類あります。自分への備忘録も兼ねて記事にしたいなーと思った次第。
本当は全部について詳しく解説していきたいのですが、多い。なんせパターンの数が多い。

そこで、開き直って全部のパターンを1行だけで解説していきたいと思います。

パターン解説

ここからは各パターンについて解説します。

1. Iterator

ループ用クラスを作る。

2. Adapter

ラッパークラスを挟んで使いやすくする。

3. Template Method

抽象クラスで形だけ決めてサブクラスで実装する。

4. Factory Method

Template Method パターンをインスタンスの生成に適用する。

5. Singleton

コンストラクタをプライベートにしてインスタンスを1つしか作れなくする。

6. Prototype

インスタンスを原型からクローンして作る。

7. Builder

パーツごとにクラスを作って分解する。

8. Abstract Factory

大規模な Factory Method。

9. Bridge

「機能」と「実装」でクラスを分ける

10. Strategy

サブクラス単位で実装を切り替える。ガンガンいこうぜ。

11. Composite

枝葉の上に抽象クラス被せて同一視する。ファイルシステム。

12. Decorator

飾り付けをクラスで切り替える。ストラテジーに近い。

13. Visitor

Iteratorで回しながら個別に処理する。

14. Chain of Responsibility

クラスごとの役割に徹してたらい回しにする。

15. Facade

窓口を作って呼び出すクラスとメソッドを1つに絞る。

16. Mediator

状態管理(など)を1つのクラスに任せる

17. Observer

通知を受けてアクションを起こす観察者(Observer)を立てる。

18. Memento

状態を保存するクラスを作る。undoやredoがやりやすい。

19. State

「昼」や「夜」などの状態ごとにクラスを作る。コード内の分岐を減らせる。

20. Flyweight

共有できるものはなるべく共有する。

21. Proxy

使うクラスと使われるクラスの間に1つクラスを挟んで使いやすくする。

22. Command

「命令」の内容と「実装」の内容を分離する。

23. Interpreter

正規表現とか文法の異なる言語を共通の文法で使えるようにする。

まとめ

以上、デザインパターン1行解説でした。
こうしてみても、正直理解しきったとは言い難い感じだなーと思います。

もちろんこれだって万能ではないだろうし、このあたりをやんわりと頭に入れながら、あとはひたすら実戦で磨いていくのがいいんだろうなぁ。

また更新します〜〜