Mais conteúdo relacionado
Semelhante a 覚えて帰ろうJavaデザインパターン (20)
覚えて帰ろうJavaデザインパターン
- 1. Copyright © BizReach, Inc. All Right Reserved. 1
覚えて帰ろう
Java デザインパターン
2017 年 01 月 20 日
株式会社ビズリーチ
プロダクトマーケティング本部
廣田 和也
- 2. Copyright © BizReach, Inc. All Right Reserved. 2
自己紹介
名前 廣田 和也
所属 株式会社ビズリーチ
仕事 ビズリーチサービスの
企業側サイトのグロースハック
java 5 年くらい
- 4. Copyright © BizReach, Inc. All Right Reserved. 4
アジェンダ
デザインパターンとは
Template Method パターン
Strategy パターン
- 6. Copyright © BizReach, Inc. All Right Reserved. 6
デザインパターンとは
ソフトウェア開発におけるデザインパターンとは
過去のソフトウェア設計者が発見し編み出した
設計ノウハウを蓄積し、名前をつけ、
再利用しやすいように特定の規約に従って
カタログ化したものである。
引用元: wikipedia デザインパターン ( ソフトウェア )
- 8. Copyright © BizReach, Inc. All Right Reserved. 8
GoF (Gang of Four) のデザインパターン
GoF とはエーリヒ・ガンマ、リチャード・ヘルム
ラルフ・ジョンソン、ジョン・ブリシディースの
4 人のことで、書籍『オブジェクト指向における
再利用のためのデザインパターン』において
デザインパターンという用語を初めてソフトウ
ェア開発に導入し、同時に書籍の中で 23 種類の
パターンを取り上げた。
デザインパターンとは
- 9. Copyright © BizReach, Inc. All Right Reserved. 9
Java だと
GoF のデザインパターンを Java で
解説した『 Java 言語で学ぶデザ
インパターン入門』結城 浩著
が有名
デザインパターンとは
- 10. Copyright © BizReach, Inc. All Right Reserved. 10
GoF のデザインパターン 23 種
Abstract Factory
Builder
Factory Method
Prototype
Singleton
Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy
デザインパターンとは
Chain of Responsibility
Command
Interpreter
Iterator
Mediator
Memento
Observer
State
Strategy
Template Method
Visitor
- 12. Copyright © BizReach, Inc. All Right Reserved. 12
GoF のデザインパターン 23 種
Abstract Factory
Builder
Factory Method
Prototype
Singleton
Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy
デザインパターンとは
Chain of Responsibility
Command
Interpreter
Iterator
Mediator
Memento
Observer
State
Strategy
Template Method
Visitor
- 13. Copyright © BizReach, Inc. All Right Reserved. 13
GoF のデザインパターン 23 種
Abstract Factory
Builder
Factory Method
Prototype
Singleton
Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy
デザインパターンとは
Chain of Responsibility
Command
Interpreter
Iterator
Mediator
Memento
Observer
State
Strategy
Template Method
Visitor
- 14. Copyright © BizReach, Inc. All Right Reserved. 14
少ない労力で良い設計ができる
• 車輪の再発明はしない
メンバーに少ない単語で正確に設計を伝えられる
• パターン名を伝えるだけで、その構造と振る舞いを瞬時に共有できる
覚えてうれしいこと
デザインパターンとは
- 18. Copyright © BizReach, Inc. All Right Reserved. 18
Template Method パターン
ある処理のおおまかなアルゴリズムをあらかじめ決めて、
そのアルゴリズムの具体的な設計をサブクラスに任せるこ
とで
ある。
Template Method パターンとは
- 22. Copyright © BizReach, Inc. All Right Reserved. 22
Template Method パターン
要するにこんなイメージ
花子さん
漫画
これだと「変数の中身が変わっただけじゃん」と思うかもしれないが
実際の Template Method では空欄にアルゴリズムが入る
- 23. Copyright © BizReach, Inc. All Right Reserved. 23
Template Method パターン
スーパークラスで処理の枠組みを定め、
サブクラスでその具体的内容を実装する。
どんな設計?
- 24. Copyright © BizReach, Inc. All Right Reserved. 24
Template Method パターン
サンプル - 動物との遭遇
フロー
動物:現れる
人:動物においでおいでをする
動物:おいでおいでにリアクションする
人:動物に餌をあげる
動物:餌にリアクションする
動物は以下の種類にて切り替えが可能である
→猫、犬、豚
- 25. Copyright © BizReach, Inc. All Right Reserved. 25
Template Method パターン
sample program
動物との遭遇
クラス図
登場人物
・ AbstractClass( 抽象クラス )
→AbstractAnimalEncounter
・ ConcreteClass( 具象クラス )
→DogEncounter,PigEncounter,CatEncountercommunicateAnimal
encounter encounter encounter
- 27. Copyright © BizReach, Inc. All Right Reserved. 27
Template Method パターン
流れが同一で詳細が異なる処理をまとめられる
呼び出し元でサブクラスを意識しなくてすむ
うれしいこと
- 29. Copyright © BizReach, Inc. All Right Reserved. 29
Strategy パターン
戦略( Strategy )=プログラミングにおける「アルゴリズム」
Strategy パターンでは、そのアルゴリズムを実装した部分がごっ
そり交換できるようになっている
29
どんなパターン?
- 30. Copyright © BizReach, Inc. All Right Reserved. 30
Strategy パターン
30
要するに
マリオカートにおけるマリオとクッパです
操作は同じでも戦略は異なる
- 31. Copyright © BizReach, Inc. All Right Reserved. 31
Strategy パターン
31
例えばこんな感じ・・
◆ コンピューターと対戦する将棋ゲームで対戦相
手のレベルによって異なる打ち方(戦略)をさ
せる
◆EC などの購入にて支払い方法によって購入処理
のなかの課金処理(アルゴリズム)だけを切り替
える
- 32. Copyright © BizReach, Inc. All Right Reserved. 32
Template Method パターン
サンプル - 動物とのふれあい
フロー
動物:現れる
人:動物においでおいでをする
動物:おいでおいでにリアクションする
人:動物に餌をあげる
動物:餌にリアクションする
人のふれあい方法は以下の種類にて切り替えが可能である
→積極的、消極的
- 33. Copyright © BizReach, Inc. All Right Reserved. 33
sample program
猫とのふれあい戦略
クラス図
Strategy パターン
登場人物
・ StrategyInterface( 戦略の役 )
→SkinshipStrategy
・ ConcreteStrategy( 具体的戦略 )
→StrokeStrategy,FeedStrategy,
SlapStrategy
・ Context( 文脈 )
→ApproachCatLogic
- 35. Copyright © BizReach, Inc. All Right Reserved. 35
戦略毎にクラスが別になるのでメンテナンスしやすい
• 戦略の切り替えが容易
• メソッドにとけこんだ形のアルゴリズムより、柔軟で修正しやすい
戦略の追加の際に呼び出しメソッドの修正が不要
アルゴリズムを動的に切り替える際に有用
• 実行環境での切り替え(ローカル、検証、本番)等
うれしいこと
Strategy パターン