Copyright © BizReach, Inc. All Right Reserved. 1
覚えて帰ろう
java デザインパターン
2015 年 03 月 27 日
株式会社ビズリーチ
プロダクトマーケティング本部
廣田 和也
Copyright © BizReach, Inc. All Right Reserved. 2
自己紹介
名前 廣田 和也
所属 株式会社ビズリーチ
java   3 年くらい
Copyright © BizReach, Inc. All Right Reserved. 3
アジェンダ
 デザインパターンとは
 Template Method パターン
 Strategy パターン
Copyright © BizReach, Inc. All Right Reserved. 4
デザインパターンとは
Copyright © BizReach, Inc. All Right Reserved. 5
デザインパターンとは
ソフトウェア開発におけるデザインパターンとは
過去のソフトウェア設計者が発見し編み出した
設計ノウハウを蓄積し、名前をつけ、
再利用しやすいように特定の規約に従って
カタログ化したものである。
引用元: wikipedia   デザインパターン ( ソフトウェア )
Copyright © BizReach, Inc. All Right Reserved. 6
GoF (Gang of Four) のデザインパターン
GoF とはエーリヒ・ガンマ、リチャード・ヘルム
ラルフ・ジョンソン、ジョン・ブリシディースの
4 人のことで、書籍『オブジェクト指向における
再利用のためのデザインパターン』において
デザインパターンという用語を初めてソフトウ
ェア開発に導入し、同時に書籍の中で 23 種類の
パターンを取り上げた。
デザインパターンとは
Copyright © BizReach, Inc. All Right Reserved. 7
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. 8
 少ない労力で良い設計ができる
• 車輪の再発明はしない
 メンバーに少ない単語で正確に設計を伝えられる
• パターン名を伝えるだけで、その構造と振る舞いを瞬時に共有できる
覚えてうれしいこと
デザインパターンとは
Copyright © BizReach, Inc. All Right Reserved. 9
Template Method パターン
Copyright © BizReach, Inc. All Right Reserved. 10
Template Method パターン
突然ですが・・・
テンプレートって知ってますか?
Copyright © BizReach, Inc. All Right Reserved. 11
Template Method パターン
コレです。 ↓↓↓↓
Copyright © BizReach, Inc. All Right Reserved. 12
Template Method パターン
スーパークラスで処理の枠組みを定め、
サブクラスでその具体的内容を実装する。
どんなパターン?
Copyright © BizReach, Inc. All Right Reserved. 13
Template Method パターン
sample program
動物との遭遇
クラス図
登場人物
・ AbstractClass( 抽象クラス )
→AbstractAnimalEncounter
・ ConcreteClass( 具象クラス )
→DogEncounter,PigEncounter,CatEncounter
Copyright © BizReach, Inc. All Right Reserved. 14
sample code...
Template Method パターン
Copyright © BizReach, Inc. All Right Reserved. 15
Template Method パターン
 流れが同一で詳細が異なる処理をまとめられる
 呼び出し元でサブクラスを意識しなくてすむ
うれしいこと
Copyright © BizReach, Inc. All Right Reserved. 16
Strategy パターン2
Copyright © BizReach, Inc. All Right Reserved. 17
Strategy パターン
 戦略( Strategy )=プログラミングにおける「アルゴリズム」
 Strategy パターンでは、そのアルゴリズムを実装した部分がごっそ
り交換できるようになっている
17
どんなパターン?
Copyright © BizReach, Inc. All Right Reserved. 18
sample program
猫とのふれあい戦略
クラス図
Strategy パターン
登場人物
・ StrategyInterface( 戦略の役 )
→SkinshipStrategy
・ ConcreteStrategy( 具体的戦略 )
→StrokeStrategy,FeedStrategy,
SlapStrategy
・ Context( 文脈 )
→ApproachCatLogic
Copyright © BizReach, Inc. All Right Reserved. 19
sample code...
Strategy パターン
Copyright © BizReach, Inc. All Right Reserved. 20
 戦略毎にクラスが別になるのでメンテナンスしやすい
• 戦略の切り替えが容易
• メソッドにとけこんだ形のアルゴリズムより、柔軟で修正しやすい
 戦略の追加の際に呼び出しメソッドの修正が不要
 アルゴリズムを動的に切り替える際に有用
• 実行環境での切り替え(ローカル、検証、本番)等
うれしいこと
Strategy パターン
Copyright © BizReach, Inc. All Right Reserved. 21
質疑応答
Copyright © BizReach, Inc. All Right Reserved.

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

  • 1.
    Copyright © BizReach,Inc. All Right Reserved. 1 覚えて帰ろう java デザインパターン 2015 年 03 月 27 日 株式会社ビズリーチ プロダクトマーケティング本部 廣田 和也
  • 2.
    Copyright © BizReach,Inc. All Right Reserved. 2 自己紹介 名前 廣田 和也 所属 株式会社ビズリーチ java   3 年くらい
  • 3.
    Copyright © BizReach,Inc. All Right Reserved. 3 アジェンダ  デザインパターンとは  Template Method パターン  Strategy パターン
  • 4.
    Copyright © BizReach,Inc. All Right Reserved. 4 デザインパターンとは
  • 5.
    Copyright © BizReach,Inc. All Right Reserved. 5 デザインパターンとは ソフトウェア開発におけるデザインパターンとは 過去のソフトウェア設計者が発見し編み出した 設計ノウハウを蓄積し、名前をつけ、 再利用しやすいように特定の規約に従って カタログ化したものである。 引用元: wikipedia   デザインパターン ( ソフトウェア )
  • 6.
    Copyright © BizReach,Inc. All Right Reserved. 6 GoF (Gang of Four) のデザインパターン GoF とはエーリヒ・ガンマ、リチャード・ヘルム ラルフ・ジョンソン、ジョン・ブリシディースの 4 人のことで、書籍『オブジェクト指向における 再利用のためのデザインパターン』において デザインパターンという用語を初めてソフトウ ェア開発に導入し、同時に書籍の中で 23 種類の パターンを取り上げた。 デザインパターンとは
  • 7.
    Copyright © BizReach,Inc. All Right Reserved. 7 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
  • 8.
    Copyright © BizReach,Inc. All Right Reserved. 8  少ない労力で良い設計ができる • 車輪の再発明はしない  メンバーに少ない単語で正確に設計を伝えられる • パターン名を伝えるだけで、その構造と振る舞いを瞬時に共有できる 覚えてうれしいこと デザインパターンとは
  • 9.
    Copyright © BizReach,Inc. All Right Reserved. 9 Template Method パターン
  • 10.
    Copyright © BizReach,Inc. All Right Reserved. 10 Template Method パターン 突然ですが・・・ テンプレートって知ってますか?
  • 11.
    Copyright © BizReach,Inc. All Right Reserved. 11 Template Method パターン コレです。 ↓↓↓↓
  • 12.
    Copyright © BizReach,Inc. All Right Reserved. 12 Template Method パターン スーパークラスで処理の枠組みを定め、 サブクラスでその具体的内容を実装する。 どんなパターン?
  • 13.
    Copyright © BizReach,Inc. All Right Reserved. 13 Template Method パターン sample program 動物との遭遇 クラス図 登場人物 ・ AbstractClass( 抽象クラス ) →AbstractAnimalEncounter ・ ConcreteClass( 具象クラス ) →DogEncounter,PigEncounter,CatEncounter
  • 14.
    Copyright © BizReach,Inc. All Right Reserved. 14 sample code... Template Method パターン
  • 15.
    Copyright © BizReach,Inc. All Right Reserved. 15 Template Method パターン  流れが同一で詳細が異なる処理をまとめられる  呼び出し元でサブクラスを意識しなくてすむ うれしいこと
  • 16.
    Copyright © BizReach,Inc. All Right Reserved. 16 Strategy パターン2
  • 17.
    Copyright © BizReach,Inc. All Right Reserved. 17 Strategy パターン  戦略( Strategy )=プログラミングにおける「アルゴリズム」  Strategy パターンでは、そのアルゴリズムを実装した部分がごっそ り交換できるようになっている 17 どんなパターン?
  • 18.
    Copyright © BizReach,Inc. All Right Reserved. 18 sample program 猫とのふれあい戦略 クラス図 Strategy パターン 登場人物 ・ StrategyInterface( 戦略の役 ) →SkinshipStrategy ・ ConcreteStrategy( 具体的戦略 ) →StrokeStrategy,FeedStrategy, SlapStrategy ・ Context( 文脈 ) →ApproachCatLogic
  • 19.
    Copyright © BizReach,Inc. All Right Reserved. 19 sample code... Strategy パターン
  • 20.
    Copyright © BizReach,Inc. All Right Reserved. 20  戦略毎にクラスが別になるのでメンテナンスしやすい • 戦略の切り替えが容易 • メソッドにとけこんだ形のアルゴリズムより、柔軟で修正しやすい  戦略の追加の際に呼び出しメソッドの修正が不要  アルゴリズムを動的に切り替える際に有用 • 実行環境での切り替え(ローカル、検証、本番)等 うれしいこと Strategy パターン
  • 21.
    Copyright © BizReach,Inc. All Right Reserved. 21 質疑応答
  • 22.
    Copyright © BizReach,Inc. All Right Reserved.