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
デザインパターンとは
ソフトウェア開発におけるデザインパターンとは
過去のソフトウェア設計者が発見し編み出した
設計ノウハウを蓄積し、名前をつけ、
再利用しやすいように特定の規約に従って
カタログ化したものである。
引用元: wikipedia   デザインパターン ( ソフトウェア )
Copyright © BizReach, Inc. All Right Reserved. 7
要するに
過去の賢人の苦悩の末編み出された
GOOD な設計パターン集です!
Copyright © BizReach, Inc. All Right Reserved. 8
GoF (Gang of Four) のデザインパターン
GoF とはエーリヒ・ガンマ、リチャード・ヘルム
ラルフ・ジョンソン、ジョン・ブリシディースの
4 人のことで、書籍『オブジェクト指向における
再利用のためのデザインパターン』において
デザインパターンという用語を初めてソフトウ
ェア開発に導入し、同時に書籍の中で 23 種類の
パターンを取り上げた。
デザインパターンとは
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
Singleton
Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy
デザインパターンとは
Chain of Responsibility
Command
Interpreter
Iterator
Mediator
Memento
Observer
State
Strategy
Template Method
Visitor
Copyright © BizReach, Inc. All Right Reserved. 11
今日は業務で地味に使う
デザインパターンを2つ紹介します
デザインパターンとは
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
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
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 パターン
ある処理のおおまかなアルゴリズムをあらかじめ決めて、
そのアルゴリズムの具体的な設計をサブクラスに任せるこ
とで
ある。
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 パターン
要するにこんなイメージ
花子さん
漫画
これだと「変数の中身が変わっただけじゃん」と思うかもしれないが
実際の 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( 抽象クラス )
→AbstractAnimalEncounter
・ ConcreteClass( 具象クラス )
→DogEncounter,PigEncounter,CatEncountercommunicateAnimal
encounter encounter encounter
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 パターンでは、そのアルゴリズムを実装した部分がごっ
そり交換できるようになっている
29
どんなパターン?
Copyright © BizReach, Inc. All Right Reserved. 30
Strategy パターン
30
要するに
マリオカートにおけるマリオとクッパです
操作は同じでも戦略は異なる
Copyright © BizReach, Inc. All Right Reserved. 31
Strategy パターン
31
例えばこんな感じ・・
◆ コンピューターと対戦する将棋ゲームで対戦相
手のレベルによって異なる打ち方(戦略)をさ
せる
◆EC などの購入にて支払い方法によって購入処理
のなかの課金処理(アルゴリズム)だけを切り替
える
Copyright © BizReach, Inc. All Right Reserved. 32
Template Method パターン
サンプル - 動物とのふれあい
フロー
動物:現れる
 人:動物においでおいでをする
動物:おいでおいでにリアクションする
 人:動物に餌をあげる
動物:餌にリアクションする
人のふれあい方法は以下の種類にて切り替えが可能である
 →積極的、消極的
Copyright © BizReach, Inc. All Right Reserved. 33
sample program
猫とのふれあい戦略
クラス図
Strategy パターン
登場人物
・ StrategyInterface( 戦略の役 )
→SkinshipStrategy
・ ConcreteStrategy( 具体的戦略 )
→StrokeStrategy,FeedStrategy,
SlapStrategy
・ Context( 文脈 )
→ApproachCatLogic
Copyright © BizReach, Inc. All Right Reserved. 34
sample code...
Strategy パターン
Copyright © BizReach, Inc. All Right Reserved. 35
 戦略毎にクラスが別になるのでメンテナンスしやすい
• 戦略の切り替えが容易
• メソッドにとけこんだ形のアルゴリズムより、柔軟で修正しやすい
 戦略の追加の際に呼び出しメソッドの修正が不要
 アルゴリズムを動的に切り替える際に有用
• 実行環境での切り替え(ローカル、検証、本番)等
うれしいこと
Strategy パターン
Copyright © BizReach, Inc. All Right Reserved. 36
質疑応答
Copyright © BizReach, Inc. All Right Reserved.

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

  • 1.
    Copyright © BizReach,Inc. All Right Reserved. 1 覚えて帰ろう Java デザインパターン 2017 年 01 月 20 日 株式会社ビズリーチ プロダクトマーケティング本部 廣田 和也
  • 2.
    Copyright © BizReach,Inc. All Right Reserved. 2 自己紹介 名前 廣田 和也 所属 株式会社ビズリーチ 仕事 ビズリーチサービスの    企業側サイトのグロースハック java   5 年くらい
  • 3.
    Copyright © BizReach,Inc. All Right Reserved. 3 自己紹介 会員制転職サイト ビズリーチ
  • 4.
    Copyright © BizReach,Inc. All Right Reserved. 4 アジェンダ  デザインパターンとは  Template Method パターン  Strategy パターン
  • 5.
    Copyright © BizReach,Inc. All Right Reserved. 5 デザインパターンとは
  • 6.
    Copyright © BizReach,Inc. All Right Reserved. 6 デザインパターンとは ソフトウェア開発におけるデザインパターンとは 過去のソフトウェア設計者が発見し編み出した 設計ノウハウを蓄積し、名前をつけ、 再利用しやすいように特定の規約に従って カタログ化したものである。 引用元: wikipedia   デザインパターン ( ソフトウェア )
  • 7.
    Copyright © BizReach,Inc. All Right Reserved. 7 要するに 過去の賢人の苦悩の末編み出された GOOD な設計パターン集です!
  • 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
  • 11.
    Copyright © BizReach,Inc. All Right Reserved. 11 今日は業務で地味に使う デザインパターンを2つ紹介します デザインパターンとは
  • 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  少ない労力で良い設計ができる • 車輪の再発明はしない  メンバーに少ない単語で正確に設計を伝えられる • パターン名を伝えるだけで、その構造と振る舞いを瞬時に共有できる 覚えてうれしいこと デザインパターンとは
  • 15.
    Copyright © BizReach,Inc. All Right Reserved. 15 Template Method パターン
  • 16.
    Copyright © BizReach,Inc. All Right Reserved. 16 Template Method パターン 突然ですが・・・ テンプレートって知ってますか?
  • 17.
    Copyright © BizReach,Inc. All Right Reserved. 17 Template Method パターン コレです。 ↓↓↓↓
  • 18.
    Copyright © BizReach,Inc. All Right Reserved. 18 Template Method パターン ある処理のおおまかなアルゴリズムをあらかじめ決めて、 そのアルゴリズムの具体的な設計をサブクラスに任せるこ とで ある。 Template Method パターンとは
  • 19.
    Copyright © BizReach,Inc. All Right Reserved. 19 Template Method パターン 要するにこんなイメージ
  • 20.
    Copyright © BizReach,Inc. All Right Reserved. 20 Template Method パターン 要するにこんなイメージ 太郎くん うまい棒
  • 21.
    Copyright © BizReach,Inc. All Right Reserved. 21 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
  • 26.
    Copyright © BizReach,Inc. All Right Reserved. 26 sample code... Template Method パターン
  • 27.
    Copyright © BizReach,Inc. All Right Reserved. 27 Template Method パターン  流れが同一で詳細が異なる処理をまとめられる  呼び出し元でサブクラスを意識しなくてすむ うれしいこと
  • 28.
    Copyright © BizReach,Inc. All Right Reserved. 28 Strategy パターン2
  • 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
  • 34.
    Copyright © BizReach,Inc. All Right Reserved. 34 sample code... Strategy パターン
  • 35.
    Copyright © BizReach,Inc. All Right Reserved. 35  戦略毎にクラスが別になるのでメンテナンスしやすい • 戦略の切り替えが容易 • メソッドにとけこんだ形のアルゴリズムより、柔軟で修正しやすい  戦略の追加の際に呼び出しメソッドの修正が不要  アルゴリズムを動的に切り替える際に有用 • 実行環境での切り替え(ローカル、検証、本番)等 うれしいこと Strategy パターン
  • 36.
    Copyright © BizReach,Inc. All Right Reserved. 36 質疑応答
  • 37.
    Copyright © BizReach,Inc. All Right Reserved.