まさるblog

越後在住子持ちプログラマー奮闘記 - Author:まさる(高野 将、TAKANO Sho)

目次

Blog 利用状況

ニュース

著書

2010/7発売


Web掲載記事

@IT

.NET開発を始めるVB6プログラマーが知るべき9のこと

CodeZine

実例で学ぶASP.NET Webフォーム業務アプリケーション開発のポイント

第1回 3層データバインドを正しく活用しよう(前編)

ブログパーツ


書庫

日記カテゴリ

コミュニティ

デザインパターンを学ぶ~その2:Strategyパターン(2)~

前回のエントリの最後で、

次回は実際に実務でどのように使用すればよいかこれから考えて(^^;書こうと思います。

と書いたので、その続き。

* * *

 Strategyパターンは戦略(≒アルゴリズム)を切り替えるためのパターンであるので、当然同じ操作で異なる動作をさせたい場合に用いるのが筋ではないかと考えられます。

その上で、実際どのようなときに使えるか考えてみました。

 

・・・

 

思いつかないorz

 

 

 実際、あまり業務アプリでインスタンスを保持したままアルゴリズムを変えるパターンって、そうそう無いような?

少し考えたのはドロップダウンリストとかでデータの保存先をDB、CSV、XMLと切り替えるようなことをしたいなら使えるかなと思いました。でも、そのときにそれぞれのクラスのインスタンスを生成して処理してやればいいだけで、無理にパターンを適用しなくてもよいような気がしますし。なんか、Strategyパターンを使うためにStrategyパターンを使うような形でしか思いつかないです。頭が固いのかなぁ・・・もうちょっと考えて見ます。

 

みなさんはどんなときにStrategyパターンを適用しているんでしょうか?

 

#他にちょっと連想したのはドラクエⅣ以降の「さくせん」。(「みんながんばれ」、「ガンガンいこうぜ」とかね。)
#最終的には「じゅもんをつかうな」だったなぁ、と関係ないことを思い出しました。

投稿日時 : 2007年5月15日 23:29

Feedback

# re: デザインパターンを学ぶ~その1:Strategyパターン(2)~ 2007/05/16 1:03 επιστημη

んー...たとえばなにやらのデータ集合をソートするばやい、
比較関数をStrategyで与えることでいろんなソート順に対応するとかー...おんなじやん orz

思うにStrategy"だけ"でどーのこーのじゃなくてぇ、
アルゴリズムの動的切り替えの定石のひとつってこっちゃねぇですかねぇ。

"言わずもがな"なコト書いちまったかなー。すんません。

# re: デザインパターンを学ぶ~その1:Strategyパターン(2)~ 2007/05/16 10:13 片桐

戦略シミュレーションのソフトを作ってる時、ユーザーからはこれとこれとこれの条件を変えただけで結果がどれくらい変わるのか即時判れ、的な要件がバシバシに出てきましたね。

自分で中の計算ロジックを書きたいから、そのインターフェイスを用意しろ、とか。

ユーザーが入力した式や条件の解析ロジックだけで泣きそうになりながら実装しましたね。確かに、アルゴリズムの動的な切り替えで対応しましたですよ。

今から十ン年前の話ですけど<おいこらまて

# re: デザインパターンを学ぶ~その1:Strategyパターン(2)~ 2007/05/16 11:15 R・田中一郎

僕は「ガンガンいこうぜ」以外は使ったことがありません。

#本題に触れずに去っていく・・・

# re: デザインパターンを学ぶ~その1:Strategyパターン(2)~ 2007/05/16 12:51 かずくん

オブジェクトの粒度を細かくするため、オブジェクトコンポジションとして分割してます。
すると、気づいたらStorategyやDecoratorになってます。

従って、ここはStorategyで行こう、と決め撃ちはしていません。

# re: デザインパターンを学ぶ~その1:Strategyパターン(2)~ 2007/05/16 13:20 シャノン

デザインパターンって、設計段階から「ココにはこのパターンを使おう」って決めてかかるのは難しそうな印象があります。
最近だと言語機能に密着しているパターンもあるし、知ないうちに使っていることも結構ありそう。

…そうか。それで「パターン指向リファクタリング」なんてのが出てくるんだ。

# re: デザインパターンを学ぶ~その1:Strategyパターン(2)~ 2007/05/17 13:09 まさる

>επιστημηさん
とんでもないです。的確な指摘、ありがとうございます。確かに"だけ"で何とかしようとしても無理がありそうですね。

>片桐さん
シミュレーションをするような場合は確かに有効そうですね。

>R・田中一郎さん
デスピサロ戦は「にげる」8回の後ひたすら攻撃してたので、クリフトがザラキ使わないためには「じゅもんつかうな」でした。

>かずくんさん
オブジェクト指向言語を的確に使っていれば、自然に使っていることになる場合がある、ということですね。

>シャノンさん
決めてかかっている時点で視野が狭くなるので、難しいのは当然といえば当然ですよね^^;


皆さんのコメントで色々考えさせられたことは、後でエントリにまとめようと思います。

# デザインパターンを学ぶ~その3:Strategyパターン(3)~ 2007/05/18 0:04 まさるblog

デザインパターンを学ぶ~その3:Strategyパターン(3)~

タイトル
名前
Url
コメント