• Like
Command パターン
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Command パターン

  • 422 views
Published

ずっと前に学校で。 …

ずっと前に学校で。

内容が近視眼的に見えなくもない

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
422
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
1
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Command パターンのおはなし 2011年コードの旅 1
  • 2. いいものでありますように…COMMAND パターン 2
  • 3. それってどんなん?“ 要求をオブジェクトとしてカプセル化することによって、異な る要求や、要求からなるキューやログにより、クライアントを パラメータ化する。また、取り消し可能なオペレーションをサ ポートする。• 現代的な言語基盤ではイベントが似たようなし ” くみになってるよ!• こうすると… • 複数の (Receiver に対する操作) 要求をまとめたり… • 実行前までロールバックしやすくなったり… • 気になってきました? 3
  • 4. それってどんなしくみ?• ざっくりいうとユーザーとみっつのクラスにわかれるよ• Client – コマンド使いたいやつ • Command オブジェクトつくって • Receiver を設定するよ• Invoker – 操作要求を受けると Command を適切な順によびだすよ• Command – 前処理とかして Receiver に仕事を投げるよ• Receiver – 実際の処理をおこなうよ 4
  • 5. それってどんなしくみ? 5
  • 6. InvokerINVOKER クラス 6
  • 7. それってどんなん?• a.k.a. “Command Manager”• ICommand オブジェクトを… – undo/redo スタックに追加したり • こうすると取り消し操作でつかえるよ • あとでおはなしするかも – 実行キューに追加したり • これでトランザクション処理を実現できるよ • これもあとでしゃべるかも• ICommand ってなに? 7
  • 8. ICommandCOMMAND インターフェース 8
  • 9. それってどんなん?• Invoker 向けに API を定義 – Invoker と Receiver を仲介 – おもに保持している Receiver.Action (任意のメソッド) をよび だすメソッドが定義される • あと設定も… – 実装では前処理を行ったりすることもある• Receiver ってなんだっけ? 9
  • 10. ReceiverRECEIVER クラス 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 GOFs 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