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

Mais conteúdo relacionado

Mais procurados

越境する開発 -Seek Right Things-
越境する開発 -Seek Right Things- 越境する開発 -Seek Right Things-
越境する開発 -Seek Right Things-
toshihiro ichitani
 

Mais procurados (7)

塹壕にいるすべての同朋へ
塹壕にいるすべての同朋へ塹壕にいるすべての同朋へ
塹壕にいるすべての同朋へ
 
グリーで行われている勉強会とその特徴 ✕ 勉強会を主催してみた話
グリーで行われている勉強会とその特徴 ✕ 勉強会を主催してみた話グリーで行われている勉強会とその特徴 ✕ 勉強会を主催してみた話
グリーで行われている勉強会とその特徴 ✕ 勉強会を主催してみた話
 
プロダクトオーナーが知るべき97のこと
プロダクトオーナーが知るべき97のことプロダクトオーナーが知るべき97のこと
プロダクトオーナーが知るべき97のこと
 
越境する開発 -Seek Right Things-
越境する開発 -Seek Right Things- 越境する開発 -Seek Right Things-
越境する開発 -Seek Right Things-
 
われわれはなぜアジャイルに向かうのか
われわれはなぜアジャイルに向かうのかわれわれはなぜアジャイルに向かうのか
われわれはなぜアジャイルに向かうのか
 
価値探索 -仮説検証の実践-
価値探索 -仮説検証の実践-価値探索 -仮説検証の実践-
価値探索 -仮説検証の実践-
 
誰でもできるGoogleアシスタント開発
誰でもできるGoogleアシスタント開発誰でもできるGoogleアシスタント開発
誰でもできるGoogleアシスタント開発
 

Destaque

凡人の凡人による凡人のためのデザインパターン第一幕 Public
凡人の凡人による凡人のためのデザインパターン第一幕 Public凡人の凡人による凡人のためのデザインパターン第一幕 Public
凡人の凡人による凡人のためのデザインパターン第一幕 Public
bonjin6770 Kurosawa
 
XP寺子屋 デザインパターン入門
XP寺子屋 デザインパターン入門XP寺子屋 デザインパターン入門
XP寺子屋 デザインパターン入門
takepu
 
ハトでもわかるオブジェクト指向
ハトでもわかるオブジェクト指向ハトでもわかるオブジェクト指向
ハトでもわかるオブジェクト指向
uka yare
 

Destaque (16)

デザインパターン
デザインパターンデザインパターン
デザインパターン
 
Crystalを触り始めてから起こったこと
Crystalを触り始めてから起こったことCrystalを触り始めてから起こったこと
Crystalを触り始めてから起こったこと
 
覚えて帰ろうJavaデザインパターン
覚えて帰ろうJavaデザインパターン覚えて帰ろうJavaデザインパターン
覚えて帰ろうJavaデザインパターン
 
dezainn
dezainndezainn
dezainn
 
デザインパターン(初歩的な7パターン)
デザインパターン(初歩的な7パターン)デザインパターン(初歩的な7パターン)
デザインパターン(初歩的な7パターン)
 
Javaによる理想のデザインパターン
Javaによる理想のデザインパターンJavaによる理想のデザインパターン
Javaによる理想のデザインパターン
 
凡人の凡人による凡人のためのデザインパターン第一幕 Public
凡人の凡人による凡人のためのデザインパターン第一幕 Public凡人の凡人による凡人のためのデザインパターン第一幕 Public
凡人の凡人による凡人のためのデザインパターン第一幕 Public
 
Java デザインパターン勉強会 第5回(最終回)
Java デザインパターン勉強会 第5回(最終回)Java デザインパターン勉強会 第5回(最終回)
Java デザインパターン勉強会 第5回(最終回)
 
GoF のデザインパターンじゃないけど、よくあるパターン
GoF のデザインパターンじゃないけど、よくあるパターンGoF のデザインパターンじゃないけど、よくあるパターン
GoF のデザインパターンじゃないけど、よくあるパターン
 
Strategy パターンと開放/閉鎖原則に見るデザインパターンの有用性
Strategy パターンと開放/閉鎖原則に見るデザインパターンの有用性Strategy パターンと開放/閉鎖原則に見るデザインパターンの有用性
Strategy パターンと開放/閉鎖原則に見るデザインパターンの有用性
 
Template Method Design Pattern
Template Method Design PatternTemplate Method Design Pattern
Template Method Design Pattern
 
「コトナス」:出会わなくても良いアプリ『Match★Contact』
「コトナス」:出会わなくても良いアプリ『Match★Contact』「コトナス」:出会わなくても良いアプリ『Match★Contact』
「コトナス」:出会わなくても良いアプリ『Match★Contact』
 
React NativeでTwitterクライアントを作ってみよう
React NativeでTwitterクライアントを作ってみようReact NativeでTwitterクライアントを作ってみよう
React NativeでTwitterクライアントを作ってみよう
 
XP寺子屋 デザインパターン入門
XP寺子屋 デザインパターン入門XP寺子屋 デザインパターン入門
XP寺子屋 デザインパターン入門
 
パターン言語の構造と事例
パターン言語の構造と事例パターン言語の構造と事例
パターン言語の構造と事例
 
ハトでもわかるオブジェクト指向
ハトでもわかるオブジェクト指向ハトでもわかるオブジェクト指向
ハトでもわかるオブジェクト指向
 

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

【超初心者向け!】今更聞けないリーンスタートアップとデザイン思考
【超初心者向け!】今更聞けないリーンスタートアップとデザイン思考【超初心者向け!】今更聞けないリーンスタートアップとデザイン思考
【超初心者向け!】今更聞けないリーンスタートアップとデザイン思考
満徳 関
 
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていることYahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
Yahoo!デベロッパーネットワーク
 
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019
満徳 関
 

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

Google apps scriptを使って業務改善
Google apps scriptを使って業務改善Google apps scriptを使って業務改善
Google apps scriptを使って業務改善
 
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアル
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアルリクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアル
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアル
 
アイデアを形にする ①プロダクト設計のイロハを学ぶ
アイデアを形にする ①プロダクト設計のイロハを学ぶアイデアを形にする ①プロダクト設計のイロハを学ぶ
アイデアを形にする ①プロダクト設計のイロハを学ぶ
 
すぐに着手できる、SEO改善ポイントについて(後編)
すぐに着手できる、SEO改善ポイントについて(後編)すぐに着手できる、SEO改善ポイントについて(後編)
すぐに着手できる、SEO改善ポイントについて(後編)
 
【超初心者向け!】今更聞けないリーンスタートアップとデザイン思考
【超初心者向け!】今更聞けないリーンスタートアップとデザイン思考【超初心者向け!】今更聞けないリーンスタートアップとデザイン思考
【超初心者向け!】今更聞けないリーンスタートアップとデザイン思考
 
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
 
JJUG CCC 2015 Spring 「新人エンジニア奮闘記 - Javaって何?からwebサービスを公開するまで -」発表スライド
JJUG CCC 2015 Spring 「新人エンジニア奮闘記 - Javaって何?からwebサービスを公開するまで -」発表スライドJJUG CCC 2015 Spring 「新人エンジニア奮闘記 - Javaって何?からwebサービスを公開するまで -」発表スライド
JJUG CCC 2015 Spring 「新人エンジニア奮闘記 - Javaって何?からwebサービスを公開するまで -」発表スライド
 
最若手メンバーこそチャンス!チーム改善に取り組んでわかったこと
最若手メンバーこそチャンス!チーム改善に取り組んでわかったこと最若手メンバーこそチャンス!チーム改善に取り組んでわかったこと
最若手メンバーこそチャンス!チーム改善に取り組んでわかったこと
 
JSUG 2018 BTC
JSUG 2018 BTCJSUG 2018 BTC
JSUG 2018 BTC
 
BPSttudy#84 アイデアをカタチにする方法
BPSttudy#84 アイデアをカタチにする方法BPSttudy#84 アイデアをカタチにする方法
BPSttudy#84 アイデアをカタチにする方法
 
株式会社リブセンス会社説明資料(転職エージェント企業様向け)
株式会社リブセンス会社説明資料(転職エージェント企業様向け)株式会社リブセンス会社説明資料(転職エージェント企業様向け)
株式会社リブセンス会社説明資料(転職エージェント企業様向け)
 
Web企業における大規模組織での品質の取り組み
Web企業における大規模組織での品質の取り組みWeb企業における大規模組織での品質の取り組み
Web企業における大規模組織での品質の取り組み
 
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていることYahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
 
ソフトウェアのように〇〇を作る
ソフトウェアのように〇〇を作るソフトウェアのように〇〇を作る
ソフトウェアのように〇〇を作る
 
Firebaseマーケティング活用事例
Firebaseマーケティング活用事例Firebaseマーケティング活用事例
Firebaseマーケティング活用事例
 
Netadashi Meetup #6 20170629
Netadashi Meetup #6 20170629Netadashi Meetup #6 20170629
Netadashi Meetup #6 20170629
 
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019
 
[ギルドワークス社イベント]〜DXを実現するためにユーザ企業とSI企業が今すぐとるべき3つのステップ〜(ボーナス版)
[ギルドワークス社イベント]〜DXを実現するためにユーザ企業とSI企業が今すぐとるべき3つのステップ〜(ボーナス版)[ギルドワークス社イベント]〜DXを実現するためにユーザ企業とSI企業が今すぐとるべき3つのステップ〜(ボーナス版)
[ギルドワークス社イベント]〜DXを実現するためにユーザ企業とSI企業が今すぐとるべき3つのステップ〜(ボーナス版)
 
JIRA collaboration without walls [JIRAが引き出す現場力] #JiraServiceDesk
JIRA collaboration without walls [JIRAが引き出す現場力] #JiraServiceDesk  JIRA collaboration without walls [JIRAが引き出す現場力] #JiraServiceDesk
JIRA collaboration without walls [JIRAが引き出す現場力] #JiraServiceDesk
 
手っ取り早くプロジェクトをなんとかしたい人のためのnanapi流ツール活用術~WebSig会議 vol.34「Webディレクター必見!プロジェクトを成功に...
手っ取り早くプロジェクトをなんとかしたい人のためのnanapi流ツール活用術~WebSig会議 vol.34「Webディレクター必見!プロジェクトを成功に...手っ取り早くプロジェクトをなんとかしたい人のためのnanapi流ツール活用術~WebSig会議 vol.34「Webディレクター必見!プロジェクトを成功に...
手っ取り早くプロジェクトをなんとかしたい人のためのnanapi流ツール活用術~WebSig会議 vol.34「Webディレクター必見!プロジェクトを成功に...
 

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