- - PR -
よく利用するデザインパターンは?
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-08-27 16:33
ちょっとネタがずれるかもしれませんが
J2EEパターンとか利用してますか? ServiceToWorkerというパターンがあるのですが、 適用したときは、一つのフレームワークが できてしまったみたいな錯覚になりました。 ほかのJ2EEパターンは良く知らないのですが 結局は、ファクトリーであったり、ストラテジィが基本に なっていたりするのでしょうね あとMVCこれははずせないですね | ||||||||
|
投稿日時: 2003-08-27 17:27
普段は.NET会議室の方で勉強させてもらっている
Mickyといいます。 最初にデザインパターンを勉強したときは、 「なんでもっと早く勉強しなかったんだろう」と思いました。 自分のイメージとしては、 「なんだ、オブジェクト指向ってデザインパターンの為にあるんじゃん!?」 と思ったくらいでした よく使うのはやはり、Singlton、AbstractFactoryあたりでしょうか、 ObserverやProxyなんかは適用場面が結構あるのではないでしょうか? (実際無意識に使っていたり…) あるまとまった処理を設計したい場合、デザインパターンカタログと にらめっこします。どれか使えないかなぁ〜〜って… そのまま当てはまらなくても、それをベースに自分なりにアレンジした 形で使えたりして、オブジェクト指向の恩恵に預かっております。 いつも.NETの方がメインなのでオブジェクト指向や、デザインパターンの 話題は言語とは独立させて欲しいな・・・ | ||||||||
|
投稿日時: 2003-08-27 20:20
>自分のイメージとしては、
>「なんだ、オブジェクト指向ってデザインパターンの為にあるんじゃん!?」 >と思ったくらいでした ほぼ同感.デザインパターンを知らずして,オブジェクト指向を 分かったつもりになっちゃいけません. ちなみにGoF本が出たのが,たしか1995年くらい. それ以前の人は口コミで教えてもらうか, 我流でもがきあがくかしかありませんでした. #私はもちろん後者. | ||||||||
|
投稿日時: 2003-08-28 00:27
>自分のイメージとしては、
>「なんだ、オブジェクト指向ってデザインパターンの為にあるんじゃん!?」 >と思ったくらいでした オブジェクト指向『プログラミング』 - > デザインパターン (実装モデリング) オブジェクト指向『モデリング』 - > アナリシスパターン (概念モデリング) こういう考えもできると思います。 >それ以前の人は口コミで教えてもらうか, >我流でもがきあがくかしかありませんでした. ぼくは今「Java言語で学ぶ デザインパターン入門結城浩著」で勉強しています。良い本だと思います。 >あとMVCこれははずせないですね デザインパターン、フレームワーク、アーキテクチャ…。色々と話の視点によって用語が変わってしまうような気がします。 >デザインパターンにとらわれず、インターフェースと実装を分離させることに注力して設計す>ると、必然とよいものになっていくでしょう。 デザインパターン + 自分なりの設計哲学が必要ということですね。(なるほどなるほどρ(・・)) C言語からJavaに移ったばかりのころは、Iteratorの使い方がまったくわからず苦労しましたけど、パターンとして勉強してみると、思わず「へぇ〜」と思ってしまいました。 | ||||||||
|
投稿日時: 2003-08-28 02:50
ピアソンから出ている「プログラマのためのJava設計ベストプラクティス」の1章に ちょこっとだけOpen Closed PrincipleやLiskov Substitution Principleなどの解説が 載っています。 | ||||||||
|
投稿日時: 2003-08-28 06:26
みなさんStrategy使えといっておられますが、動的なアルゴリズム切り替えってそんなに必要ですか?動的に切り替えないのであれば、TemplateMethodやInterfaceを利用すべきだと私は思うのですが。逆にStrategy使って動的なアルゴリズム切り替えをしないといけないような要件はゲームくらいしか思いつきません。なにかほかにあるのでしょうか?
| ||||||||
|
投稿日時: 2003-08-28 09:30
皆さんが「使え!」とは言っていないと思いますが。。。 デザインパターンは、どのパターンも、別に使用を強制するものではないのでは? それぞれの状況にあわせて適用すれば良いだけです。使う必要のないところに使う必要はありません。
GoF本のStrategyの目的には「動的なアルゴリズム切り替え」とは書かれていません。「アルゴリズムをカプセル化し、それらを交換可能にする」と書かれていますね。 前の投稿でも述べたように、Strategyの本質はOCPだと思います。仕様変更が生じた際に、コードを修正することなく、新しいクラスを追加することで対応できるというところが最大の利点ではないでしょうか。 JDKのGUI(ContainerとLayoutManagerなど)関係で効果的に使われていますし、ソートのアルゴリズムの切り替えなんかにも適用できるのではないでしょうか。 Smalltalkでは「さまざまなフォーマットでファイルを保存する」「さまざまな改行方式でテキストデータを処理する」「さまざまな形式で同じデータをグラフ化する」といった適用用途が紹介されています。 Tomcatの設計にも多く取り入れられているみたいですね。さまざまな各機能モジュールをカプセル化しておき、バージョン・アップに伴って、どんどん取り替えていくようにしているみたいです。 | ||||||||
|
投稿日時: 2003-08-28 10:13
おはようございます。
皆さん返答ありがとうございます。 早速近所の本屋に出かけたところ、「Javaデザインパターン 徹底攻略(技術評論者)」という 本があり、読みやすかったので買って読んでいるところです。 で、話はそれますが、読んでてふと思ったのですが、デザインパターンの説明でよくJava が使われていますよね。そして、よくインターフェースが使われていますよね。 思い込みかも知れませが、インターフェースってJavaは多重継承ができない代わりに取り 入れられた機能みたいな説明をよく見ます。 デザインパターンはオブジェクト指向における設計指針のようなものであって、Javaに 特化したものではないとおもうのですが、インターフェースのない他のオブジェクト指向 言語でもデザインパターンを取り入れることはできるのでしょうか? C++のデザインパターンの説明は見た事ありますが、DelphiやVB.NET、Ruby、PHP5なんか でもできるのかな? VB.NET、Ruby、PHP5なんかはインターフェースの機能が実装されているのかな? ちなみにJava以外のオブジェクト指向言語はよく知りません。 [ メッセージ編集済み 編集者: maru 編集日時 2003-08-28 10:14 ] | ||||||||
