#TL;DR
クラス型言語を使って自分で何か作る時、自分に言い聞かせる備忘録。
#GoFはいったん捨てろ
The Gang of Fourとかいう偉い4人組がデザインパターンの始祖を創造された。
- 特定のロジックの実装に名前をつけたのがアルゴリズム
- 特定のインスタンスの連携に名前をつけたのがデザインパターン
デザインパターンとはインスタンス間の連携の構造に名前をつけたものだ。
GoFの作ったデザインパターンは、思想の勉強としてはいい教材だがもう古い。
現代でも通用するものはあるが、不要なパターンのほうが多いと思う。
#具象と抽象を往復せよ
ある処理構造を設計する時に、最初のステップは具体的な事象のモデル化だ。
実現したい処理の構造を思い描いたら、そこから具体的な部分を削っていく。
抽象的な骨組みが残ったら、そこからまた具象部分を実装することを考える。
何度か具象と抽象を往復しているうちに、実装すべき内容が見えてくる。
#現代のパターンを使いまわす
典型的な要求とそれに適したパターンがあるのなら迷わずそれを使う。
- パブリッシャー・サブスクライバーパターン
マスターインスタンスが複数のクライアントインスタンスからの処理要求を
オンデマンドで処理するパターン。Webサーバのような形。
- パイプラインパターン
DirectShowフィルターグラフで通じる人もいると思う。インスタンスの入出力を
統一して、あるインスタンスの出力が次のインスタンスの入力になるようにする。
パイプラインの各段は(入出力待ちを除けば)並列に動ける。
#パターンを創造する
設計を進めるうちに、応用性のあるインスタンス構造や処理の構造を思いついた。
似たようなパターンは技術書で見たことがない。ネット検索でもヒットしない。
なら創造主となってパターンに命名しよう。すでに誰かが思いついていようとも
知ったことではない。俺流パターンを作り出そう。
何番煎じであろうとも私はまだ煎じていないという迷言名言もあるではないか。
だれかの考えたものを応用するだけがオブジェクト指向ではないのである。