デザインパターンの書籍に載っているクラス図や役割を見ていて、Client 役(クラス)があったりなかったりするので、有無を票にしてみました。
特に「振る舞いに関するパターン」にはあるとかといったものは無いかな。 とりあえず、「AbstractXxxx」と「ConcreteXxxx」がある場合は「AbstractXxxx」を使おう!ってことくらいが共通項でしょうか? まぁ単純に、各パターンそれぞれで、どのクラスは Client が使っていいのか(もしくはどのクラスを使ってはいけないのかの方が重要かも)を表しているとしか言いようがないでしょう。
以下の表では
- Gang of Four → 『オブジェクト指向における再利用のためのデザインパターン』
- 結城浩 → 『増補改訂版Java言語で学ぶデザインパターン入門』
- Wikipedia (日本語) → Wikipedia 日本語版
- Wikipedia (English) → Wikipedia 英語版
- LePUS3 and Class-Z → 『LePUS3 and Class-Z』
に載っているクラス図を参考にしました。 各欄の記号は
- Client 役があれば『○』
- Client 役が無ければ空欄
- クラス図が載っていなかったり、サイト自体がなかったりした場合は『-』
- GoF 本で Client が薄くなっている(灰色になっている)場合は『△』
としています。
パターン | Gang of Four | 結城浩 | Wikipedia (日本語) |
Wikipedia (English) |
LePUS3 and Class-Z |
---|---|---|---|---|---|
Abstract Factory | ○ | ○ | ○ | ○ | |
Builder | ○ | - | |||
Factory Method | |||||
Prototype | ○ | ○ | - | - | - |
Singleton | - | ||||
Adapter | ○ | ○ | ○ | ○ | |
Bridge | △ | ||||
Composite | ○ | ○ | |||
Decorator | |||||
Facade | ○ | ○ | - | ||
Flyweight | ○ | ○ | - | ○ | |
Proxy | △ | ○ | ○ | ○ | ○ |
Chain of Responsibility | ○ | ○ | - | - | - |
Command | ○ | ○ | ○ | ○ | - |
Interpreter | ○ | ○ | - | ○ | - |
Iterator | △ | - | |||
Mediator | - | - | - | ||
Memento | - | - | - | ||
Observer | - | ||||
State | - | ||||
Strategy | |||||
Template Method | |||||
Visitor | △ | ○ | ○ | ○ |