SlideShare uma empresa Scribd logo
1 de 37
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.

Mais conteúdo relacionado

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

Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていることYahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
Yahoo!デベロッパーネットワーク
 
jmrx勉強会:抜粋(デコム)110831[1]
jmrx勉強会:抜粋(デコム)110831[1]jmrx勉強会:抜粋(デコム)110831[1]
jmrx勉強会:抜粋(デコム)110831[1]
Shigeru Kishikawa
 
【eLV】ITコンサルタントへの第一歩シリーズ ~課題の仮説立案③~ #elv勉強会
【eLV】ITコンサルタントへの第一歩シリーズ ~課題の仮説立案③~ #elv勉強会【eLV】ITコンサルタントへの第一歩シリーズ ~課題の仮説立案③~ #elv勉強会
【eLV】ITコンサルタントへの第一歩シリーズ ~課題の仮説立案③~ #elv勉強会
満徳 関
 

Semelhante a 覚えて帰ろうJavaデザインパターン (20)

覚えて帰ろうJavaデザインパターン
覚えて帰ろうJavaデザインパターン覚えて帰ろうJavaデザインパターン
覚えて帰ろうJavaデザインパターン
 
Google apps scriptを使って業務改善
Google apps scriptを使って業務改善Google apps scriptを使って業務改善
Google apps scriptを使って業務改善
 
ビズリーチ x ScalaMatsuri by BIZREACH, Inc.
ビズリーチ x ScalaMatsuri  by BIZREACH, Inc.ビズリーチ x ScalaMatsuri  by BIZREACH, Inc.
ビズリーチ x ScalaMatsuri by BIZREACH, Inc.
 
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていることYahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
 
手っ取り早くプロジェクトをなんとかしたい人のためのnanapi流ツール活用術~WebSig会議 vol.34「Webディレクター必見!プロジェクトを成功に...
手っ取り早くプロジェクトをなんとかしたい人のためのnanapi流ツール活用術~WebSig会議 vol.34「Webディレクター必見!プロジェクトを成功に...手っ取り早くプロジェクトをなんとかしたい人のためのnanapi流ツール活用術~WebSig会議 vol.34「Webディレクター必見!プロジェクトを成功に...
手っ取り早くプロジェクトをなんとかしたい人のためのnanapi流ツール活用術~WebSig会議 vol.34「Webディレクター必見!プロジェクトを成功に...
 
GPTech_25卒向け紹介資料
GPTech_25卒向け紹介資料GPTech_25卒向け紹介資料
GPTech_25卒向け紹介資料
 
QuizNow yapcasia
QuizNow yapcasiaQuizNow yapcasia
QuizNow yapcasia
 
JSUG 2018 BTC
JSUG 2018 BTCJSUG 2018 BTC
JSUG 2018 BTC
 
アドセンス
アドセンスアドセンス
アドセンス
 
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアル
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアルリクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアル
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアル
 
Webdirection
WebdirectionWebdirection
Webdirection
 
【20121124】word bench大阪
【20121124】word bench大阪【20121124】word bench大阪
【20121124】word bench大阪
 
「レバレジーズ×ビズリーチ」マーケツール連携の裏側全部語ります。
「レバレジーズ×ビズリーチ」マーケツール連携の裏側全部語ります。「レバレジーズ×ビズリーチ」マーケツール連携の裏側全部語ります。
「レバレジーズ×ビズリーチ」マーケツール連携の裏側全部語ります。
 
分析できるデータは自ら作る@Data Analyst Meetup Tokyo vol.8
分析できるデータは自ら作る@Data Analyst Meetup Tokyo vol.8分析できるデータは自ら作る@Data Analyst Meetup Tokyo vol.8
分析できるデータは自ら作る@Data Analyst Meetup Tokyo vol.8
 
BPSttudy#84 アイデアをカタチにする方法
BPSttudy#84 アイデアをカタチにする方法BPSttudy#84 アイデアをカタチにする方法
BPSttudy#84 アイデアをカタチにする方法
 
[CTO Night & Day 2019] Amazon Culture #ctonight
[CTO Night & Day 2019] Amazon Culture #ctonight[CTO Night & Day 2019] Amazon Culture #ctonight
[CTO Night & Day 2019] Amazon Culture #ctonight
 
jmrx勉強会:抜粋(デコム)110831[1]
jmrx勉強会:抜粋(デコム)110831[1]jmrx勉強会:抜粋(デコム)110831[1]
jmrx勉強会:抜粋(デコム)110831[1]
 
【eLV】ITコンサルタントへの第一歩シリーズ ~課題の仮説立案③~ #elv勉強会
【eLV】ITコンサルタントへの第一歩シリーズ ~課題の仮説立案③~ #elv勉強会【eLV】ITコンサルタントへの第一歩シリーズ ~課題の仮説立案③~ #elv勉強会
【eLV】ITコンサルタントへの第一歩シリーズ ~課題の仮説立案③~ #elv勉強会
 
Design pattern in presto source code
Design pattern in presto source codeDesign pattern in presto source code
Design pattern in presto source code
 
私たち企業がアクセシビリティに取り組む理由(2018年) #accfes
私たち企業がアクセシビリティに取り組む理由(2018年) #accfes私たち企業がアクセシビリティに取り組む理由(2018年) #accfes
私たち企業がアクセシビリティに取り組む理由(2018年) #accfes
 

Mais de dcubeio

Mais de dcubeio (20)

AWS Summit Tokyo 2019登壇資料「DevOpsの劇的改善!古いアーキテクチャから王道のマネージドサービスを活用しフルリプレイス! 」
AWS Summit Tokyo 2019登壇資料「DevOpsの劇的改善!古いアーキテクチャから王道のマネージドサービスを活用しフルリプレイス! 」AWS Summit Tokyo 2019登壇資料「DevOpsの劇的改善!古いアーキテクチャから王道のマネージドサービスを活用しフルリプレイス! 」
AWS Summit Tokyo 2019登壇資料「DevOpsの劇的改善!古いアーキテクチャから王道のマネージドサービスを活用しフルリプレイス! 」
 
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
 
ビットコインとブロックチェーンを初めからていねいに(超基礎編)
ビットコインとブロックチェーンを初めからていねいに(超基礎編)ビットコインとブロックチェーンを初めからていねいに(超基礎編)
ビットコインとブロックチェーンを初めからていねいに(超基礎編)
 
20171206 d3 health_tech発表資料
20171206 d3 health_tech発表資料20171206 d3 health_tech発表資料
20171206 d3 health_tech発表資料
 
Go初心者がGoでコマンドラインツールの作成に挑戦した話
Go初心者がGoでコマンドラインツールの作成に挑戦した話Go初心者がGoでコマンドラインツールの作成に挑戦した話
Go初心者がGoでコマンドラインツールの作成に挑戦した話
 
初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)
初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)
初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)
 
BizReach x Marketo連携
BizReach x Marketo連携BizReach x Marketo連携
BizReach x Marketo連携
 
Kinesis Firehoseを使ってみた
Kinesis Firehoseを使ってみたKinesis Firehoseを使ってみた
Kinesis Firehoseを使ってみた
 
Apiドキュメンテーションツールを使いこなす【api blueprint編】
Apiドキュメンテーションツールを使いこなす【api blueprint編】Apiドキュメンテーションツールを使いこなす【api blueprint編】
Apiドキュメンテーションツールを使いこなす【api blueprint編】
 
春の脆弱性祭り 2017/06/13
春の脆弱性祭り 2017/06/13春の脆弱性祭り 2017/06/13
春の脆弱性祭り 2017/06/13
 
DynamoDBを導入した話
DynamoDBを導入した話DynamoDBを導入した話
DynamoDBを導入した話
 
Play2 scalaを2年やって学んだこと
Play2 scalaを2年やって学んだことPlay2 scalaを2年やって学んだこと
Play2 scalaを2年やって学んだこと
 
すごーい!APIドキュメントを更新するだけでAPIが自動テストできちゃう!たのしー!
すごーい!APIドキュメントを更新するだけでAPIが自動テストできちゃう!たのしー! すごーい!APIドキュメントを更新するだけでAPIが自動テストできちゃう!たのしー!
すごーい!APIドキュメントを更新するだけでAPIが自動テストできちゃう!たのしー!
 
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
 
Bitcoin x Slack でマイクロペイメントを実現! 〜生活の必要上割り勘botを作るまで〜
Bitcoin x Slack でマイクロペイメントを実現! 〜生活の必要上割り勘botを作るまで〜Bitcoin x Slack でマイクロペイメントを実現! 〜生活の必要上割り勘botを作るまで〜
Bitcoin x Slack でマイクロペイメントを実現! 〜生活の必要上割り勘botを作るまで〜
 
【freee】プロダクトマネージャーの仕事と魅力
【freee】プロダクトマネージャーの仕事と魅力【freee】プロダクトマネージャーの仕事と魅力
【freee】プロダクトマネージャーの仕事と魅力
 
【ビズリーチ】プロダクトマネージャーの仕事と魅力
【ビズリーチ】プロダクトマネージャーの仕事と魅力【ビズリーチ】プロダクトマネージャーの仕事と魅力
【ビズリーチ】プロダクトマネージャーの仕事と魅力
 
Python × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack botPython × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack bot
 
HR Tech x 機械学習 導入事例紹介
HR Tech x 機械学習 導入事例紹介HR Tech x 機械学習 導入事例紹介
HR Tech x 機械学習 導入事例紹介
 
Scalaマクロ入門 bizr20170217
Scalaマクロ入門 bizr20170217 Scalaマクロ入門 bizr20170217
Scalaマクロ入門 bizr20170217
 

覚えて帰ろう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.