真紀俊男
技術者のためのC++ワンポイント
ガイド
書誌
author | 真紀俊男 |
publisher | 『Interface 2001.10-2002.8』CQ出版社 |
履歴
editor | 唯野 |
2002.6.2x ? | 読了 |
2002.10.17 | 公開 |
2004.11.1 | 修正 |
2012.2.7 | 修正 |
2020.2.25 | 文字化け修正 |
上記連載の中からデザインパターンの扱った部分をまとめている。一般にデザインパターンというと例題として Java の用いられることが多く、個人的には C++ での簡便な例が欲しかったので、この記事はありがたかった。パターンという以上、いつでもその概要を参照できる状態になければ意味はないわけで、GoF 本よりも手軽に参照できる点で特に優れている。(もちろん GoF の日本語改訂版では C++ でのサンプルも独自に収録されており、これはこれでありがたい配慮である。)つまり、パターンを問題に当てはめるのではなく、問題をパターンにあてはめるための使い方ということである。
むろん、他所でもいわれているように、デザインパターンそのものは単なる雛形に過ぎないから、実際の自分の仕事への応用は個別に行わなければならない。最近では、そのような特定ドメイン向けのパターン集も存在しているので、より自分の問題に合わせたパターンの理解と実践が必要だろう。
なお、今更、雑誌を買い集めるわけにもいかない方には『TRY! PC 2002 Autumn』がこの連載記事をまとめた単行本となっているので、こちらがおすすめである。
# なお、なお手抜きのためクラス図が ASCII ART になっている
# 折を見て UML モデリングツールあたりで修正したい
# 一応、----- が抽象クラス、===== が具象クラスである
抄録
Smalltalk では Object が Observer パターンの機能を始めから持っているのでそのまま利用できる。Java では Swing が、その変形パターンを採用している。
デザインパターンに関しては GoF 本以外に POSA 本(F・ブッシュマンほか/金澤典子ほか訳『ソフトウェアアーキテクチャ ソフトウェア開発のためのパターン体系』近代科学社)という定本がある。
また、デザインパターンが主にメカニズムの設計で用いられるのに対して、他に以下のようなパターンがある。『アンチパターン』 も変種といえるだろう。
- アナリシスパターン オブジェクト指向分析でのパターン。同名の本がある。より概念レベルでのパターンを扱う。
- アーキテクチャパターン アーキテクチャ設計の中での全体的な構成におけるパターン。レイヤ構成や MVC、MFC での Dock-View など。
- パイプ & フィルタ 入力データを加工して出力するような場合に、プログラムの側をフィルタとして捉えるパターン。フィルタ同士はインタフェースをパイプとすることで独立性を保つ。しかし、データ構造が一貫しないと組み合わせに依存性を生じる場合がある。