Submit Search
Upload
Command パターン
•
1 like
•
814 views
Akio Nikaido
Follow
ずっと前に学校で。 内容が近視眼的に見えなくもない
Read less
Read more
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 14
Download now
Download to read offline
Recommended
Rubyでバルクインサート
Rubyでバルクインサート
Fujimura Munehiko
ECMAScript6による関数型プログラミング
ECMAScript6による関数型プログラミング
TanUkkii
130207 kyotorb
130207 kyotorb
Yuki Shibazaki
Clrh 110827 wfho
Clrh 110827 wfho
Tomoyuki Obi
Rails application template
Rails application template
Yuto Ogi
後期第三回ネットワークチーム講座資料
後期第三回ネットワークチーム講座資料
densan_teacher
JVMの中身を可視化してみた
JVMの中身を可視化してみた
Kengo Toda
Varnish
Varnish
Ayako Hatori
Recommended
Rubyでバルクインサート
Rubyでバルクインサート
Fujimura Munehiko
ECMAScript6による関数型プログラミング
ECMAScript6による関数型プログラミング
TanUkkii
130207 kyotorb
130207 kyotorb
Yuki Shibazaki
Clrh 110827 wfho
Clrh 110827 wfho
Tomoyuki Obi
Rails application template
Rails application template
Yuto Ogi
後期第三回ネットワークチーム講座資料
後期第三回ネットワークチーム講座資料
densan_teacher
JVMの中身を可視化してみた
JVMの中身を可視化してみた
Kengo Toda
Varnish
Varnish
Ayako Hatori
apachehereというPHPのBuiltin Serverっぽいやつをつくった
apachehereというPHPのBuiltin Serverっぽいやつをつくった
Junichi Ishida
Ansible入門
Ansible入門
Akira Otsuka
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Koichi Sasada
Tiny server
Tiny server
komem3
Server specのご紹介
Server specのご紹介
Akira Kaneda
TypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめ
Yu Nobuoka
意識の低い自動化
意識の低い自動化
greenasparagus
Clrh 20140301
Clrh 20140301
Tomoyuki Obi
Couch DB in 15minutes
Couch DB in 15minutes
Yohei Sasaki
モダン JavaScript における非同期処理 - Promise, async/await -
モダン JavaScript における非同期処理 - Promise, async/await -
Kazunori Hashikuchi
Re: WebServer BenchMarking
Re: WebServer BenchMarking
Ryo Tomidokoro
コンパイラ指向ReVIEW
コンパイラ指向ReVIEW
Masahiro Wakame
20091119_sinatraを使ってみた
20091119_sinatraを使ってみた
ngi group.
テスティングフレームワークに入門してみた - Swift編
テスティングフレームワークに入門してみた - Swift編
Hisakuni Fujimoto
ストリーム処理エンジン「Zero」の開発と運用
ストリーム処理エンジン「Zero」の開発と運用
Eiichi Sato
LT#7 Hello coffeeしてきた
LT#7 Hello coffeeしてきた
Shingo Inoue
Isomorphic web development with scala and scala.js
Isomorphic web development with scala and scala.js
TanUkkii
キメるClojure
キメるClojure
Yoshitaka Kawashima
Javascriptのあれやこれやをまとめて説明してみる
Javascriptのあれやこれやをまとめて説明してみる
Shunji Konishi
たのしいNode.js
たのしいNode.js
ishiki-takai
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Chihiro Ito
Openshift 20191128
Openshift 20191128
Yasushi Osonoi
More Related Content
What's hot
apachehereというPHPのBuiltin Serverっぽいやつをつくった
apachehereというPHPのBuiltin Serverっぽいやつをつくった
Junichi Ishida
Ansible入門
Ansible入門
Akira Otsuka
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Koichi Sasada
Tiny server
Tiny server
komem3
Server specのご紹介
Server specのご紹介
Akira Kaneda
TypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめ
Yu Nobuoka
意識の低い自動化
意識の低い自動化
greenasparagus
Clrh 20140301
Clrh 20140301
Tomoyuki Obi
Couch DB in 15minutes
Couch DB in 15minutes
Yohei Sasaki
モダン JavaScript における非同期処理 - Promise, async/await -
モダン JavaScript における非同期処理 - Promise, async/await -
Kazunori Hashikuchi
Re: WebServer BenchMarking
Re: WebServer BenchMarking
Ryo Tomidokoro
コンパイラ指向ReVIEW
コンパイラ指向ReVIEW
Masahiro Wakame
20091119_sinatraを使ってみた
20091119_sinatraを使ってみた
ngi group.
テスティングフレームワークに入門してみた - Swift編
テスティングフレームワークに入門してみた - Swift編
Hisakuni Fujimoto
ストリーム処理エンジン「Zero」の開発と運用
ストリーム処理エンジン「Zero」の開発と運用
Eiichi Sato
LT#7 Hello coffeeしてきた
LT#7 Hello coffeeしてきた
Shingo Inoue
Isomorphic web development with scala and scala.js
Isomorphic web development with scala and scala.js
TanUkkii
キメるClojure
キメるClojure
Yoshitaka Kawashima
Javascriptのあれやこれやをまとめて説明してみる
Javascriptのあれやこれやをまとめて説明してみる
Shunji Konishi
たのしいNode.js
たのしいNode.js
ishiki-takai
What's hot
(20)
apachehereというPHPのBuiltin Serverっぽいやつをつくった
apachehereというPHPのBuiltin Serverっぽいやつをつくった
Ansible入門
Ansible入門
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Tiny server
Tiny server
Server specのご紹介
Server specのご紹介
TypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめ
意識の低い自動化
意識の低い自動化
Clrh 20140301
Clrh 20140301
Couch DB in 15minutes
Couch DB in 15minutes
モダン JavaScript における非同期処理 - Promise, async/await -
モダン JavaScript における非同期処理 - Promise, async/await -
Re: WebServer BenchMarking
Re: WebServer BenchMarking
コンパイラ指向ReVIEW
コンパイラ指向ReVIEW
20091119_sinatraを使ってみた
20091119_sinatraを使ってみた
テスティングフレームワークに入門してみた - Swift編
テスティングフレームワークに入門してみた - Swift編
ストリーム処理エンジン「Zero」の開発と運用
ストリーム処理エンジン「Zero」の開発と運用
LT#7 Hello coffeeしてきた
LT#7 Hello coffeeしてきた
Isomorphic web development with scala and scala.js
Isomorphic web development with scala and scala.js
キメるClojure
キメるClojure
Javascriptのあれやこれやをまとめて説明してみる
Javascriptのあれやこれやをまとめて説明してみる
たのしいNode.js
たのしいNode.js
Similar to Command パターン
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Chihiro Ito
Openshift 20191128
Openshift 20191128
Yasushi Osonoi
Operator reading and writing ( Operator SDK 編 )
Operator reading and writing ( Operator SDK 編 )
ロフト くん
Openshift 20191121
Openshift 20191121
Yasushi Osonoi
「今そこにある危機」を捉える ~ pg_stat_statements revisited
「今そこにある危機」を捉える ~ pg_stat_statements revisited
Uptime Technologies LLC (JP)
Kubernetes ときどき Serverless -- cndjp第1回勉強会
Kubernetes ときどき Serverless -- cndjp第1回勉強会
Hiroshi Hayakawa
Using docker infrastructure
Using docker infrastructure
Junya Niwa
DVGA writeup
DVGA writeup
Yu Iwama
Dockerとdev ops
Dockerとdev ops
Hiroshi Maekawa
エンジニアのための勉強会 #5 『Container』
エンジニアのための勉強会 #5 『Container』
Naoki Yoshitake
Infrakit Docker_Tokyo_meetup
Infrakit Docker_Tokyo_meetup
Yuji Oshima
Java concurrency in_practice_chap06
Java concurrency in_practice_chap06
ohtsuchi
Docker勉強会
Docker勉強会
namikikazuma
Weeklycms20120218
Weeklycms20120218
Yoshi Sakai
Infrakitの話とk8s+GPUの話
Infrakitの話とk8s+GPUの話
Yuji Oshima
Rubyにおけるトレース機構の刷新
Rubyにおけるトレース機構の刷新
Koichi Sasada
超高速アプリ開発法
超高速アプリ開発法
Keiichi SASAKI
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
Yukihiko SAWANOBORI
20170124 linux basic_2
20170124 linux basic_2
YUSUKE MORIZUMI
fluentd を利用した大規模ウェブサービスのロギング
fluentd を利用した大規模ウェブサービスのロギング
Yuichi Tateno
Similar to Command パターン
(20)
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Openshift 20191128
Openshift 20191128
Operator reading and writing ( Operator SDK 編 )
Operator reading and writing ( Operator SDK 編 )
Openshift 20191121
Openshift 20191121
「今そこにある危機」を捉える ~ pg_stat_statements revisited
「今そこにある危機」を捉える ~ pg_stat_statements revisited
Kubernetes ときどき Serverless -- cndjp第1回勉強会
Kubernetes ときどき Serverless -- cndjp第1回勉強会
Using docker infrastructure
Using docker infrastructure
DVGA writeup
DVGA writeup
Dockerとdev ops
Dockerとdev ops
エンジニアのための勉強会 #5 『Container』
エンジニアのための勉強会 #5 『Container』
Infrakit Docker_Tokyo_meetup
Infrakit Docker_Tokyo_meetup
Java concurrency in_practice_chap06
Java concurrency in_practice_chap06
Docker勉強会
Docker勉強会
Weeklycms20120218
Weeklycms20120218
Infrakitの話とk8s+GPUの話
Infrakitの話とk8s+GPUの話
Rubyにおけるトレース機構の刷新
Rubyにおけるトレース機構の刷新
超高速アプリ開発法
超高速アプリ開発法
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
20170124 linux basic_2
20170124 linux basic_2
fluentd を利用した大規模ウェブサービスのロギング
fluentd を利用した大規模ウェブサービスのロギング
Command パターン
1.
Command パターンのおはなし
2011年コードの旅 1
2.
いいものでありますように… COMMAND パターン
2
3.
それってどんなん? “
要求をオブジェクトとしてカプセル化することによって、異な る要求や、要求からなるキューやログにより、クライアントを パラメータ化する。また、取り消し可能なオペレーションをサ ポートする。 • 現代的な言語基盤ではイベントが似たようなし ” くみになってるよ! • こうすると… • 複数の (Receiver に対する操作) 要求をまとめたり… • 実行前までロールバックしやすくなったり… • 気になってきました? 3
4.
それってどんなしくみ? • ざっくりいうとユーザーとみっつのクラスにわかれるよ • Client
– コマンド使いたいやつ • Command オブジェクトつくって • Receiver を設定するよ • Invoker – 操作要求を受けると Command を適切な順によびだすよ • Command – 前処理とかして Receiver に仕事を投げるよ • Receiver – 実際の処理をおこなうよ 4
5.
それってどんなしくみ?
5
6.
Invoker INVOKER クラス
6
7.
それってどんなん? • a.k.a. “Command
Manager” • ICommand オブジェクトを… – undo/redo スタックに追加したり • こうすると取り消し操作でつかえるよ • あとでおはなしするかも – 実行キューに追加したり • これでトランザクション処理を実現できるよ • これもあとでしゃべるかも • ICommand ってなに? 7
8.
ICommand COMMAND インターフェース
8
9.
それってどんなん? • Invoker 向けに
API を定義 – Invoker と Receiver を仲介 – おもに保持している Receiver.Action (任意のメソッド) をよび だすメソッドが定義される • あと設定も… – 実装では前処理を行ったりすることもある • Receiver ってなんだっけ? 9
10.
Receiver RECEIVER クラス
10
11.
それって(略) • ターゲット オブジェクトとも…つまり
Receiver オブジェクトに対してコマンドが実行される • Receiver.Action がよびだされると… – 実際にコマンドのメイン処理がはいる • しゃべってるだけじゃわかりにくいですよね? – ソースコードみていきましょう! – 主役:やる夫 (左) 11
12.
デモやるよ
12
13.
まとめ • つまり… –
(コマンドの実行) 要求そのものをオブジェクトにしちゃう • そうすると… – いいとこ • 最初に言ってたトランザクション処理とコマンド履歴の実装が ちょっと楽になる • ICommand オブジェクトはコマンドに関する設定を一時的に保持す る空間として便利 – いくないとこ • 使うべきか見極めるのがめんどくさい • ICommand.Execute の引数が抽象的になりすぎて実装で困る! 13
14.
文献 • Command pattern
- Wikipedia, the free encyclopedia – http://en.wikipedia.org/wiki/Command_pattern • デザインパターン第11回「Commandパターン」 - Bug Catharsis – http://d.hatena.ne.jp/zecl/20071008/p1 • Skeleton of GOF's Design Pattern – http://www002.upp.so- net.ne.jp/ys_oota/mdp/Command/index.htm • 2ch全AAイラスト化計画 – http://riceballman.fc2web.com/AA- Illust/Data/NyusokuDeYaruo.html 14
Download now