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