GOFデザインパターン入門

GOFデザインパターン入門
対象となる方
•
•
•
•
デザインパターン?なにそれ
聞いた事はあるけど・・・
今ひとつ使い所が判らない
UMLが読めなくて・・・
デザインパターンとは(なんなのか)
• GOF(ギャング・オブ・フォー)が編み出したソ
フトウェア開発を行う上での設計パターン
• 設計というが、実装により近い部分で適用す
るもの
• オブジェクト指向言語による開発時の問題に
対するアプローチに名付けを行ったもの
パターンの種類(1/2)
•
•
•
•
•
•
•
Abstract Factory
Builder
Factory Method
Prototype
Singleton
Adapter
Bridge
•
•
•
•
•
•
•
Composite
Decorator
Facade
Flyweight
Proxy
Chain of Responsibility
Command
パターンの種類(2/2)
•
•
•
•
•
•
•
Interpreter
Iterator
Mediator
Memento
Observer
State
Strategy
• Template Method
• Visitor
使うとどうなるのか
• 使う、というよりはパターンに当て嵌める、の
方が近い
• 同じような問題は誰しもが問題視してきた
• 誰もが似たような結論に至った
• この問題にはこのパターンで解決してみて
は?という提案
パターン(Singleton)
• そのクラスのインスタンスが1つである事を保
証する
• 1つでないといけない事情
• Static変数で値を持つ事との違い
パターン(Flyweight)
• 同じインスタンスは共有し、メモリ消費量を低
減させる
• データベースの、マスタを思い浮かべて…
パターン(Strategy)
• アルゴリズムを交換可能にする。
Strategyの例(Struts)
アプリケーションサーバ
ブラウザ
コントローラ部
処理
振り分ける
• Strutsに於ける
ActionServletは、リクエ
ストによってActionクラ
スを切り替える。
処理
処理
Strategyの例(Runnable)
①Threadオブジェクトにセット
Threadオブジェクト
②スレッドを開始すると、
インタフェース
Runnable
を実装したオブジェクト
run()
Runnableのrunが呼ばれる。
ThreadにセットするRunnableを入れ替える事で処理が切り替わる。