- PR -

よく利用するデザインパターンは?

投稿者投稿内容
Micky
大ベテラン
会議室デビュー日: 2002/09/04
投稿数: 137
投稿日時: 2003-08-28 10:17
Mickyでございます。
いつも勉強させていただいております。

「Strategy」ですか・・・
そうですね。米山@クロノスさんがおっしゃる様に、
「動的に…」とは書いてありませんね

米山@クロノスさんの例は「静的」にStrategyの威力を発揮する場面だと思います。
「動的にアルゴリズムを…」と字面を見るとなんだか特殊なケースの様な感じも
しますが、実はかなり基本的で、多用されるパターンのひとつだと思います。

こんなのもたぶん「Strategy」パターンですね。
−−−−−−−−−−−−−−−−−−−−−−−−−
・画面にはひとつだけデータグリッドがあります。
・選択された条件でこのデータグリッドにはいろんなテーブルの
内容を表示したいと思っています。
・選択されるテーブル(又は条件)毎にConcreatStrategyを作成します。
・選択された条件で該当のConcreatStrategyを生成します。
(この生成部分でFactoryMethodなんか適用できますね)
・表示する側ではStrategyの共通インターフェースを利用して
表示します。
−−−−−−−−−−−−−−−−−−−−−−−−−−

これで表示する側は全く同じロジックで、表示される内容
は全く別のものになるという「動的にアルゴリズムを変える」
といった感じのものになるのではないでしょうか?

実用的ではありませんが、
「条件によって、ソートのアルゴリズムを選べる」
なんて場合にも使えますよね。
未記入
ぬし
会議室デビュー日: 2002/03/28
投稿数: 255
投稿日時: 2003-08-28 10:24
>思い込みかも知れませが、インターフェースってJavaは多重継承ができない
>代わりに取り入れられた機能みたいな説明をよく見ます。
そういう風に説明している本が結構あるのは事実のようですが,俗説です.
「インターフェース」の説明はGoF本にもあったと思います.

>デザインパターンはオブジェクト指向における設計指針のようなものであって、
>Javaに特化したものではないとおもうのですが、インターフェースのない他の
>オブジェクト指向言語でもデザインパターンを取り入れることはできるのでしょうか?
GoF本自体,C++で書かれています.
「あらゆる言語で」とはいかずとも,ほとんどのオブジェクト
指向言語で使えるとは思います.ただし,実装の細部は異なる
でしょう.

>C++のデザインパターンの説明は見た事ありますが、DelphiやVB.NET、
>Ruby、PHP5なんかでもできるのかな?
たしか「オブジェクト指向スクリプト言語Ruby」でも,Rubyを使った
デザインパターンが紹介されていたと思います.

#なんで他の言語の例でSmalltalkが出て来ないんだろう....
ぽん
大ベテラン
会議室デビュー日: 2003/05/13
投稿数: 157
投稿日時: 2003-08-28 10:34
スレッドの趣旨と違いますが・・・
引用:

maruさんの書き込み (2003-08-28 10:13) より:

思い込みかも知れませが、インターフェースってJavaは多重継承が
できない代わりに取り入れられた機能みたいな説明をよく見ます。


Interfaceの役割は仕様と実装の分離ですよ。
「Interface=多重継承」という考え方は捨てた方が良いと思います。
(オブジェクト指向を理解する上での妨げになるように思えます)

「Interface=多重継承」って思っている人多いのかな・・・

[追記]
コメントがかぶっちゃいましたね

[ メッセージ編集済み 編集者: ぽん 編集日時 2003-08-28 10:39 ]
ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2003-08-29 10:38
ども、ほむらです。
デザインパターンって何気に色々あるんですね^^;;;;
検索してみたらこんなページを見つけました。

使ってみようかなという人の参考になれば幸いです。
(用途例程度のないようですが。。。)
--------
TITLE:JAVA覚え書き GoFデザインパターン一覧
URL:
http://www.dmz.hitachi-sk.co.jp/Java/Tech/pattern/gof/list.html
--------
# リンク切れしていたらごめんなさい><
佐々木
大ベテラン
会議室デビュー日: 2003/03/30
投稿数: 121
投稿日時: 2003-08-31 14:42
引用:

ぽんさんの書き込み (2003-08-28 10:34) より:
「Interface=多重継承」という考え方は捨てた方が良いと思います。
(オブジェクト指向を理解する上での妨げになるように思えます)

「Interface=多重継承」って思っている人多いのかな・・・


結構いるかもしれません。「Javaにはポインタがない」に次いで迷惑なデマですな。

もっとも、interfaceと、抽象クラスによる骨格実装をうまく使う「疑似多重継承」
という技法("Effective Java"の項目16参照)のように、使い方によっては多重継承の
代わりになることも確かです。

もちろん多重継承がinterfaceの主目的でないことだけは明らかですが。
raystar
ぬし
会議室デビュー日: 2003/01/16
投稿数: 251
お住まい・勤務地: Tokyo/Japan
投稿日時: 2003-08-31 23:56
引用:

raystarさん こんにちは。
http://www.dmz.hitachi-sk.co.jp/Java/Tech/pattern/gof/singleton.html で、
Singletonパターンについて読み、書いてある事はなんとなく理解できていると思います。
しかしショックを受けるほどピンときません。

>Singletonはかなり強力だと思います。
>私もJava始めたころに知って、
>かなりショックをうけました。
参考までに、どういったところが強力だと思い、ショックを受けられましたか?



ConnectionPoolという言葉が流行りだしたころ、
お決まりの機能(接続、切断)を一つのクラスにまとめようと考えました。
しかし、プールという以上、インスタンスがポコポコできてしまっては
プールの意味がなくなることに気付きました。
Singletonを採用すればプログラマーがミスすることなく
唯一のインスタンスを作成することができます。
また、その機能を一つのインスタンスに任せることができます。
他の言語をやっていたころ、
お決まりの接続、切断コードを記述するのですが、
毎度、データソースを取得する必要があるのか、
DBにパスワードを送る必要はあるのか、無駄ではないかと
思っていたころなのでとてもショックを受けましたよ。

関数にまとめればコードを書く必要はないと思いますが、
実際にそのコードは走っているわけでしたから。

スキルアップ/キャリアアップ(JOB@IT)