WR blog

about Enterprise IT, Oracle Database, Jazz/Fusion Music, etc…

WR blog RSS Feed
 
 
 
 

Archive for ObjectModeling

コマンドパターンとストラテジパターン

PofEAA 読書会で話題になったので。

シンタックス的に利用する機構(=多態性)が同じこの2つのパターン。 思うところをつれづれと書いてみたりする。

コマンドパターン

マクロでみた意味的には、そのインスタンスにコマンド実行(処理実行)に必要なデータと、ロジックを詰め込むようなイメージ。

必要なデータとロジックがインスタンスにパッキングされているがゆえに、1番目の処理Aと2番目の処理Bと3番目の処理Aを実行したい場合は、処理Aに対応したインスタンス+処理Bに対応したインスタンス+処理Aに対応したインスタンスをキューなどに並べておき、順次実行すればよいこととなる。 コマンド実行のトリガを与えるクライアントが、コマンドのインスタンス以外に気を使わなくて良い点がポイント。コマンドクラスが、そのコマンド実行に必要なデータ、ロジックをカプセル化して保持しているから。 さらに、コマンド実行を取り消す(アンドゥ)ために必要なデータと、ロジックも詰め込むようにすることで、アンドゥ処理が可能となる。

OOPの意味的な観点でいうと、コマンドパターンは「インスタンス」に意味がある。

具体的には、同じMoveCommand(dx, dy)でも、new MoveCommand(5,10)と new MoveCommand(-10,20)は、処理内容が異なる。

多態性は、クライアントが異なるコマンド種別を統一的に実行できるために活用される。

Command cmd = queue.getCommand(); cmd.execute()

ストラテジパターン

マクロで見た意味的には、ロジックをプラガブルにしたようなイメージ。インスタンスレベルで保持するデータにはあまり重きを置かれていない。

クラスとか、インスタンスとかが本質的な意味でポイントにはならず、プラガブルな構成要素的な観点を持つものであればよい。

OOPの意味的な観点でいうと、ストラテジパターンは「インスタンス」にあまり意味がない。

プラガブルな機構を実現できれば、ストラテジが提供するメソッドはクラスメソッドでもかまわない。(暴論気味・・・)

多態性は、クライアントの統一的な利用というよりは、プラグ差し替えを実現するための機構として利用される。本質は利用形態の一元化ではなく、差し替え可能性にある。

最近のコマンドパターン

StrutsのActionFormをコマンドパターンとか言う人もいて、 ちょっと違和感を感じていたりもするけど、まぁいいかも。という気もする。

HTTPリクエストの内容を、1つのインスタンスにパックしており、かつ、ビジネスレイヤの呼び出しというロジックも(一応)実装しているから。上記に話とも一応対応している。

が、キューに格納されるでもなく、アンドゥ機構を提供するでもない点がちょっと引っかかるかな。コマンドパターンのご利益を活用しているわけではないということ。

executeメソッドを実装しているクラス群が何でもコマンドパターンというのは違うと思いますがね。 インスタンスにデータとロジックがパッキングされていることがポイント。 と思いますよー。と、気弱にまとめてみた。

PofEAA 6th

PofEAA’s Wiki - PofEAA読書会第6回

行ってきた&少しお時間をいただけたので、発表しました。

サーガ

.NETエンタープライズWebアプリケーション開発技術大全 (Vol.5)”

箇条書きにて。

時間15分もらえた。

OHPは5ページ進んだ 残り30(!)ページ

サーガの定義について鋭いツッコミ

いやー書籍における定義は、自分も怪しいとおもっていのたのだよねーと。(→OHP該当ページの一番下の行を見られたし) 補償トランザクションの補償は電話(=運用対処)

補償トランザクションの実現イメージ

純粋OLTP系処理なら黒伝+赤伝なるイメージとなる。トランザクションデータ(=取引系データ)に、通常の取引系データ(黒伝)と、打ち消し用取引系データ(赤伝)なる2種類を用意しておき、アプリ側では、赤伝が存在する場合は、黒伝がないものとして扱うようにする。など。 ただ、ただ、大量データを扱うバッチの場合は実現方法にもう一工夫必要となりそうな気がする。 また、正方向のトランザクションと、補償トランザクションの時間差も重要。Webサービスとの絡みで論じられるロングトランザクションは、純粋なトランザクションの観点では同様であるけれども、オンラインバッチの補償トランザクションとは、時間がカナリ異なる。 これらの意味で、当日の議論は若干ずれていた気がする。その場では、理解した気になっていたのですが。すまぬ。>皆様

バッチでキャッシュは怖い

よねー。やっぱり。

いろいろ

yyamanoさんのPCの壁紙がカッコイイ。(覗き見したった。) 議論の参加者が増えていい感じ。

整理も必要かもと、ちょっとおもったが、ドメインモデルのあたりの話は複雑すぎて、参戦できず・・・。実装センスが弱いな。>俺

感謝

あれだけの大人数なのに、一体感をもって進められたのは、絶妙な座席配置に資する部分も大きいかと。ありがとうございます。>オージス軍団の方々。

→ GLADさんとkukutaniさんの工夫みたい。すばらしいです。ありがとうございます。

オブジェクト指向システム分析到着・・・

koichikさんのコメント : Csus4.net - Just example. ≫ Blog Archive ≫ PoEAA 4th により書名を教えてたいただき、早速購入したのですが・・・・・

む、むずいっす・・・・。 付録AのOSAの形式的定義の構成を抜粋します・・・。

A.1 ORMから第一階述語と規則への写像

A.1.1 述語 A.1.2 規則

A.2 第一階言語から数学的モデルへの写像 A.3 OSAメタモデル

A.3.1 図A.4における最初の制約の変換 A.3.2 図A.4における二つ目の制約の変換 A.3.3 図A.4における三つ目の制約の変換 A.3.4 図A.4における四つ目の制約の変換

なかなか手ごわそうです・・・オブジェクト指向システム開発―分析・設計・プログラミングへの実践的アプローチ

オブジェクト指向設計の説明

職場のやりとりの中で、オブジェクト指向を知らない上司にオブジェクト指向を説明する羽目になった。

たとえ話で説明したのだけど、なかなかうまくいったように思う。上司にも「わかりやすい!」と感謝してもらえ、かつマイmixi限定でやりとりを公開したら結構好評で、わたくしカナリゴキゲン(←アホ)なので、ここにもやり取りを残しておくことにする。うほ。

やりとり

上司「なんで継承構造が複雑だと問題なの?」

自分「(継承を駆使した(※))オブジェクト指向設計のメリットは2つです。1つは、実作業者をある種のカタにはめられること。もう1つは、機能を共有できることです。」 (※: テンプレートメソッド的なイメージを持っていただければ。)

自分「たとえると、ビジネスフォームみたいなものです。たとえば、契約書とかで、本文には「甲が乙に・・・の義務を負う」みたいなヤツありますよね? 甲の部分を変えれば別の契約書になりますし、逆に言えば、ソコしか変えることが出来ないので、いわゆるカタにはめる格好になります。そして肝心の契約本文は共有できるので、契約を起こすたびに文面を考える必要はありません。継承を多用したオブジェクト指向設計っていうのは、こんな感じなんです。」

上司「ふーん、いいじゃない。」

自分「ですけど、問題点もあるんです。」

上司「何?」

自分「たいていの開発の場合、契約書テンプレートを作る人と、テンプレートを埋める人は別の人なんです。そして、継続してメンテナンスしないといけない。しかも、契約書の場合と異なり、両者は常に整合性をもっていないとイケないんです。 たとえば、法律の改正があって、契約書を修正しないといけないとしましょう。契約書の場合だと、テンプレートを修正して終わりですけど、ソフトウェア開発の場合だと、そうはいきません。現実の契約書テンプレートとは異なり、契約書テンプレートを修正すると、この契約書テンプレートを元にして作った契約書も全部修正されちゃうことになるんです。去年作った契約書も全部です。」

上司「あー」

自分「しかも、この(イケてない)協力会社がつくったソースの構造は複雑で、契約書にたとえると、契約書の本文に、「~の詳細については、・・・を参照」みたに契約書の構成が複雑で全貌を容易につかめないような感じなわけです。 これを将来的にメンテナンスしていくのは大変ですよ。」

上司「なるほどねー」

てな具合。

【匠に聞く】モデリングが「道具」になるには専門領域に特化しなければならない──Executable UMLの考案者Stephen J. Mellor氏 : IT Pro ニュース

【匠に聞く】モデリングが「道具」になるには専門領域に特化しなければならない──Executable UMLの考案者Stephen J. Mellor氏 : IT Pro ニュース

via Stephen J. Mellor氏のインタビュー記事 | 日々精進 - スパークスシステムズ ジャパン代表のBlog

──UMLは,用途ごとの言語仕様を定義するために「プロファイル」という枠組みを用意している。UMLをベースにしたDSLは,プロファイルとして作られていくことになるのか。  私個人は,そうならないことを望んでいる。UMLのプロファイルは,あくまでもUMLの範囲内で定義されるものだ。これでは,その業界に存在する独自の記号を利用できない。その業界で長年積み上げられてきた資産が切り捨てられてしまう。これはとてもばかげた話だ。その業界に適した記号を使った表記法にすべきだ。

Mellor氏はDSL派のようだ。

Profile

Jazz/Fusion Musicを愛するIT技術者です。 現在、Oracle Database 関連の仕事をしています。

保有資格

  • Oracle Master 10g Platinum
  • Oracle Master 11g Gold
  • Oracle Master Expert 10g RAC
  • Oracle Master Expert Oracle on Linux
  • LPIC level2
  • 日商簿記3級

連絡先

ご連絡は、wrcsus4 _at_ gmail _dot_ com にお願いいたします。

 

March 2010
M T W T F S S
« Sep    
1234567
891011121314
15161718192021
22232425262728
293031  

Recent Posts

Recent Comments

Tags

Categories

Pages

Archives

Meta