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.
Copyright © BizReach, Inc. All Right Reserved. 1
覚えて帰ろう
Java デザインパターン
2017 年 01 月 20 日
株式会社ビズリーチ
プロダクトマーケティング本部
廣田 和也
Copyright © BizReach, Inc. All Right Reserved. 2
自己紹介
名前 廣田 和也
所属 株式会社ビズリーチ
仕事 ビズリーチサービスの
   企業側サイトのグロースハック
java   5 年くらい
Copyright © BizReach, Inc. All Right Reserved. 3
自己紹介
会員制転職サイト ビズリーチ
Copyright © BizReach, Inc. All Right Reserved. 4
アジェンダ
 デザインパターンとは
 Template Method パターン
 Strategy パターン
Copyright © BizReach, Inc. All Right Reserved. 5
デザインパターンとは
Copyright © BizReach, Inc. All Right Reserved. 6
デザインパターンとは
ソフトウェア開発におけるデザインパターンとは
過去のソフトウェア設計者が発見し編み出した
設計ノウハウを蓄積し、名前をつけ、...
Copyright © BizReach, Inc. All Right Reserved. 7
要するに
過去の賢人の苦悩の末編み出された
GOOD な設計パターン集です!
Copyright © BizReach, Inc. All Right Reserved. 8
GoF (Gang of Four) のデザインパターン
GoF とはエーリヒ・ガンマ、リチャード・ヘルム
ラルフ・ジョンソン、ジョン・ブリシディ...
Copyright © BizReach, Inc. All Right Reserved. 9
Java だと
GoF のデザインパターンを Java で
解説した『 Java 言語で学ぶデザ
インパターン入門』結城 浩著
が有名
デザインパ...
Copyright © BizReach, Inc. All Right Reserved. 10
GoF のデザインパターン  23 種
Abstract Factory
Builder
Factory Method
Prototype
Si...
Copyright © BizReach, Inc. All Right Reserved. 11
今日は業務で地味に使う
デザインパターンを2つ紹介します
デザインパターンとは
Copyright © BizReach, Inc. All Right Reserved. 12
GoF のデザインパターン  23 種
Abstract Factory
Builder
Factory Method
Prototype
Si...
Copyright © BizReach, Inc. All Right Reserved. 13
GoF のデザインパターン  23 種
Abstract Factory
Builder
Factory Method
Prototype
Si...
Copyright © BizReach, Inc. All Right Reserved. 14
 少ない労力で良い設計ができる
• 車輪の再発明はしない
 メンバーに少ない単語で正確に設計を伝えられる
• パターン名を伝えるだけで、その...
Copyright © BizReach, Inc. All Right Reserved. 15
Template Method パターン
Copyright © BizReach, Inc. All Right Reserved. 16
Template Method パターン
突然ですが・・・
テンプレートって知ってますか?
Copyright © BizReach, Inc. All Right Reserved. 17
Template Method パターン
コレです。 ↓↓↓↓
Copyright © BizReach, Inc. All Right Reserved. 18
Template Method パターン
ある処理のおおまかなアルゴリズムをあらかじめ決めて、
そのアルゴリズムの具体的な設計をサブクラスに任せ...
Copyright © BizReach, Inc. All Right Reserved. 19
Template Method パターン
要するにこんなイメージ
Copyright © BizReach, Inc. All Right Reserved. 20
Template Method パターン
要するにこんなイメージ
太郎くん
うまい棒
Copyright © BizReach, Inc. All Right Reserved. 21
Template Method パターン
要するにこんなイメージ
花子さん
漫画
Copyright © BizReach, Inc. All Right Reserved. 22
Template Method パターン
要するにこんなイメージ
花子さん
漫画
これだと「変数の中身が変わっただけじゃん」と思うかもしれないが...
Copyright © BizReach, Inc. All Right Reserved. 23
Template Method パターン
スーパークラスで処理の枠組みを定め、
サブクラスでその具体的内容を実装する。
どんな設計?
Copyright © BizReach, Inc. All Right Reserved. 24
Template Method パターン
サンプル - 動物との遭遇
フロー
動物:現れる
 人:動物においでおいでをする
動物:おいでおいでに...
Copyright © BizReach, Inc. All Right Reserved. 25
Template Method パターン
sample program
動物との遭遇
クラス図
登場人物
・ AbstractClass( 抽象...
Copyright © BizReach, Inc. All Right Reserved. 26
sample code...
Template Method パターン
Copyright © BizReach, Inc. All Right Reserved. 27
Template Method パターン
 流れが同一で詳細が異なる処理をまとめられる
 呼び出し元でサブクラスを意識しなくてすむ
うれしい...
Copyright © BizReach, Inc. All Right Reserved. 28
Strategy パターン2
Copyright © BizReach, Inc. All Right Reserved. 29
Strategy パターン
戦略( Strategy )=プログラミングにおける「アルゴリズム」
Strategy パターンでは、そのアルゴリズ...
Copyright © BizReach, Inc. All Right Reserved. 30
Strategy パターン
30
要するに
マリオカートにおけるマリオとクッパです
操作は同じでも戦略は異なる
Copyright © BizReach, Inc. All Right Reserved. 31
Strategy パターン
31
例えばこんな感じ・・
◆ コンピューターと対戦する将棋ゲームで対戦相
手のレベルによって異なる打ち方(戦略)を...
Copyright © BizReach, Inc. All Right Reserved. 32
Template Method パターン
サンプル - 動物とのふれあい
フロー
動物:現れる
 人:動物においでおいでをする
動物:おいでおい...
Copyright © BizReach, Inc. All Right Reserved. 33
sample program
猫とのふれあい戦略
クラス図
Strategy パターン
登場人物
・ StrategyInterface( 戦略...
Copyright © BizReach, Inc. All Right Reserved. 34
sample code...
Strategy パターン
Copyright © BizReach, Inc. All Right Reserved. 35
 戦略毎にクラスが別になるのでメンテナンスしやすい
• 戦略の切り替えが容易
• メソッドにとけこんだ形のアルゴリズムより、柔軟で修正しやすい...
Copyright © BizReach, Inc. All Right Reserved. 36
質疑応答
Copyright © BizReach, Inc. All Right Reserved.
Upcoming SlideShare
Loading in …5
×

覚えて帰ろうJavaデザインパターン

1,941 views

Published on

sample code:
https://github.com/air-perrotta/designpattern

Published in: Engineering
  • Be the first to comment

覚えて帰ろうJavaデザインパターン

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

×