- - PR -
よく利用するデザインパターンは?
«前のページへ
1|2|3|4
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2003-08-28 10:17
Mickyでございます。
いつも勉強させていただいております。 「Strategy」ですか・・・ そうですね。米山@クロノスさんがおっしゃる様に、 「動的に…」とは書いてありませんね 米山@クロノスさんの例は「静的」にStrategyの威力を発揮する場面だと思います。 「動的にアルゴリズムを…」と字面を見るとなんだか特殊なケースの様な感じも しますが、実はかなり基本的で、多用されるパターンのひとつだと思います。 こんなのもたぶん「Strategy」パターンですね。 −−−−−−−−−−−−−−−−−−−−−−−−− ・画面にはひとつだけデータグリッドがあります。 ・選択された条件でこのデータグリッドにはいろんなテーブルの 内容を表示したいと思っています。 ・選択されるテーブル(又は条件)毎にConcreatStrategyを作成します。 ・選択された条件で該当のConcreatStrategyを生成します。 (この生成部分でFactoryMethodなんか適用できますね) ・表示する側ではStrategyの共通インターフェースを利用して 表示します。 −−−−−−−−−−−−−−−−−−−−−−−−−− これで表示する側は全く同じロジックで、表示される内容 は全く別のものになるという「動的にアルゴリズムを変える」 といった感じのものになるのではないでしょうか? 実用的ではありませんが、 「条件によって、ソートのアルゴリズムを選べる」 なんて場合にも使えますよね。 | ||||
|
投稿日時: 2003-08-28 10:24
>思い込みかも知れませが、インターフェースってJavaは多重継承ができない
>代わりに取り入れられた機能みたいな説明をよく見ます。 そういう風に説明している本が結構あるのは事実のようですが,俗説です. 「インターフェース」の説明はGoF本にもあったと思います. >デザインパターンはオブジェクト指向における設計指針のようなものであって、 >Javaに特化したものではないとおもうのですが、インターフェースのない他の >オブジェクト指向言語でもデザインパターンを取り入れることはできるのでしょうか? GoF本自体,C++で書かれています. 「あらゆる言語で」とはいかずとも,ほとんどのオブジェクト 指向言語で使えるとは思います.ただし,実装の細部は異なる でしょう. >C++のデザインパターンの説明は見た事ありますが、DelphiやVB.NET、 >Ruby、PHP5なんかでもできるのかな? たしか「オブジェクト指向スクリプト言語Ruby」でも,Rubyを使った デザインパターンが紹介されていたと思います. #なんで他の言語の例でSmalltalkが出て来ないんだろう.... | ||||
|
投稿日時: 2003-08-28 10:34
スレッドの趣旨と違いますが・・・
Interfaceの役割は仕様と実装の分離ですよ。 「Interface=多重継承」という考え方は捨てた方が良いと思います。 (オブジェクト指向を理解する上での妨げになるように思えます) 「Interface=多重継承」って思っている人多いのかな・・・ [追記] コメントがかぶっちゃいましたね [ メッセージ編集済み 編集者: ぽん 編集日時 2003-08-28 10:39 ] | ||||
|
投稿日時: 2003-08-29 10:38
ども、ほむらです。
デザインパターンって何気に色々あるんですね^^;;;; 検索してみたらこんなページを見つけました。 使ってみようかなという人の参考になれば幸いです。 (用途例程度のないようですが。。。) -------- TITLE:JAVA覚え書き GoFデザインパターン一覧 URL: http://www.dmz.hitachi-sk.co.jp/Java/Tech/pattern/gof/list.html -------- # リンク切れしていたらごめんなさい>< | ||||
|
投稿日時: 2003-08-31 14:42
結構いるかもしれません。「Javaにはポインタがない」に次いで迷惑なデマですな。 もっとも、interfaceと、抽象クラスによる骨格実装をうまく使う「疑似多重継承」 という技法("Effective Java"の項目16参照)のように、使い方によっては多重継承の 代わりになることも確かです。 もちろん多重継承がinterfaceの主目的でないことだけは明らかですが。 | ||||
|
投稿日時: 2003-08-31 23:56
ConnectionPoolという言葉が流行りだしたころ、 お決まりの機能(接続、切断)を一つのクラスにまとめようと考えました。 しかし、プールという以上、インスタンスがポコポコできてしまっては プールの意味がなくなることに気付きました。 Singletonを採用すればプログラマーがミスすることなく 唯一のインスタンスを作成することができます。 また、その機能を一つのインスタンスに任せることができます。 他の言語をやっていたころ、 お決まりの接続、切断コードを記述するのですが、 毎度、データソースを取得する必要があるのか、 DBにパスワードを送る必要はあるのか、無駄ではないかと 思っていたころなのでとてもショックを受けましたよ。 関数にまとめればコードを書く必要はないと思いますが、 実際にそのコードは走っているわけでしたから。 | ||||
«前のページへ
1|2|3|4
