デザインパターン――メモ1
1、差分プログラミング:既存のクラスを変更せずに継承し、新たに追加したい機能だけを子クラス内でプログラミングすることを差分プログラミングと言います。差分プログラミングはオブジェクト指向の大きな特徴の一つです。
2、カプセル化の時、プロパティへのアクセスを制限する必要がある: パブリックプロパティが他のクラスから自由に参照・更新することができますので、プロパティ値の整合性が取れなくなる恐れがあります。この問題を防ぐには、
・ プロパティの値を参照・更新するときは必ず特定のメソッドを経由するようにします。
・ クラスの属性(プロパティ)や振る舞い(メソッド)は、外部のクラスからは可能な限り見えないようにし(情報隠弊)、クラスの独立性を高めにする。
3、再利用における継承と委譲
継承:
・ メリット プログラミング言語で支援されていて簡単である。人間の思考に当てはまりやすい。
・ デメリット コンパイル時に静的に動作が決定されるので、継承した実装方法を変更できない。親クラスの実装を変更すると子クラスの実装にも影響が出る可能性がある。
委譲:
・ メリット 実行時にオブジェクトを得るのでその実装方法も動的に変更される。クラス間の影響が少ない(カブセル化の概念に忠実)。
・ デメリット オブジェクト間のインターフェースを慎重に設計しなくてはならない。システムの振る舞いは1クラスの中では決定せず、オブジェクト間の関連に依存する。
4、GoFのデザインパターン
| 目的 | |||
生成 | 構造 | 振る舞い | ||
範 囲 | クラス | ファクトリメソッド | アダプター | インタープリタ テンプレートメソッド |
オブジェクト | アブストラクトファクトリ ビルダー プロトタイプ シングルトン | アダプター ブリッジ コンポジット デコレータ ファサ-ド フライウェイト プロキシー | チェーンオブレスポンシビリティ コマンド イテレータ メメント オブザーバー ステート ストラテジー ビジター |
---END-----------
説明:<独習デザインパターン>の第一章、第二章を参照。