Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

デザインパターン勉強会

2,609 views

Published on

デザインパターンの基礎知識編として、2008/01/29 にアプレッソ社内向けに行った勉強会資料です。

  • Be the first to comment

デザインパターン勉強会

  1. 1. デザインパターン勉強会 第一回 基礎知識編 吉田 哲也
  2. 2. デザインパターンとは <ul><li>ソフトウェアの 再利用性 や 柔軟性 を高めるための 達人たちの努力の結果 を 体系化 し 命名 したもの </li></ul><ul><li>つまりはオブジェクト指向のメリットを享受できる実装パターン </li></ul>
  3. 3. その前に… <ul><li>結合度 </li></ul><ul><ul><li>できる限り結合度を弱くすることで、 再利用性 や 柔軟性 が高くなる </li></ul></ul><ul><li>役割 </li></ul><ul><ul><li>本当に対象のクラスはその機能 ( メソッド ) を持つべきなのか? </li></ul></ul><ul><ul><ul><li>とりあえず機能が必要だからメソッドを実装しました… </li></ul></ul></ul><ul><ul><li>本当に対象のクラスはそのデータ ( フィールド ) を持つべきなのか? </li></ul></ul><ul><ul><ul><li>とりあえずデータが必要だからフィールドに持たせました… </li></ul></ul></ul>
  4. 4. is-a と has-a <ul><li>実装方法 </li></ul><ul><ul><li>is-a ( 継承 ) 、 has-a ( コンポジション ) </li></ul></ul><ul><li>結合度 </li></ul><ul><ul><li>is-a >> has-a </li></ul></ul><ul><li>役割 </li></ul><ul><ul><li>is-a は役割も継承する </li></ul></ul>
  5. 5. デザインパターンを学ぶ意義 <ul><li>再利用可能な、柔軟性の高い設計、実装 </li></ul><ul><li>コミュニケーション </li></ul><ul><li>など </li></ul>
  6. 6. 豆知識 <ul><li>Gang of Four (GoF) により体系化された </li></ul><ul><ul><li>Erich Gamma </li></ul></ul><ul><ul><ul><li>JUnit 共同開発者 (with Kent Beck) </li></ul></ul></ul><ul><ul><li>Richard Helm </li></ul></ul><ul><ul><li>Ralph Johnson </li></ul></ul><ul><ul><li>John Vlissides </li></ul></ul><ul><li>Design Patterns Elements of Reusable Object-Oriented Software (GoF 本 ) </li></ul><ul><li>GoF 本には 23 個のデザインパターンが記載されている </li></ul>
  7. 7. デザインパターンの使いどころ <ul><li>再利用性や拡張性が要求されるところ </li></ul><ul><ul><li>フレームワーク </li></ul></ul><ul><ul><li>複数バージョン対応アダプタ </li></ul></ul><ul><li>制約があり実装に工夫が必要なところ </li></ul><ul><ul><li>インタフェースは変えれないが… . </li></ul></ul><ul><ul><li>ライブラリだけ変更したいのだが… </li></ul></ul><ul><li>など </li></ul>
  8. 8. デザインパターンを使う流れ <ul><li>エッセンスを理解する </li></ul><ul><li>リファクタリングのときに使う </li></ul><ul><li>詳細設計のときに使う </li></ul><ul><li>自然と使う </li></ul>

×