どんな問題?
- クラスが複雑すぎるインターフェースをもつこと
- 設計者がクラスの利用ニーズに対して,すべて満たそうとした結果,下記を失ってしまった状態
- 明快な抽象化
- クラスの目的
- 設計者がクラスの利用ニーズに対して,すべて満たそうとした結果,下記を失ってしまった状態
- Swiss Army Knivesは,商用ソフトのインターフェースに多い.
- ベンダーがプロダクトを様々なアプリに適用させようとした結果
- インターフェースの複雑さが引き起こす問題
どう解決する?
profileをつくる
- 複雑なインターフェースをもつクラスの慣習的な利用法を定義しておく
- これをprofileをつくるという.
- profileとは
- 複雑な技術を使う方法を説明するための書類
- よくあるのが,実装方法を規定したもの
- 二人のプログラマがだいたい同じ方法で実装するようになる.
- profileは通常,パラメータの値などの既定値を定めたりするが,
アプリの動的な振る舞いまで定義して良い- 実行の順序
- 関数呼び出し
- 例外ハンドリング