■掲示板に戻る■ ■過去ログ倉庫めにゅーに戻る■
デザインパターンの単純そうな質問
1 名前: デフォルトの名無しさん 投稿日: 2001/07/11(水) 16:22
GoFのデザインパターンを読んだけど、分からない事があるよ〜
という人のためのスレ。


2 名前: デフォルトの名無しさん 投稿日: 2001/07/11(水) 16:27
PROTOTYPEパターンの適用可能性の最初の項目が何をいいたいのか分かりません。
そもそもダイナミックローディングとは、どういった操作の事をいっているのでしょうか?

ちなみに、本は、日本語版の初版です。


3 名前: デフォルトの名無しさん 投稿日: 2001/07/11(水) 16:44
>>2
俺なんか結城さんの本を読んでもプロトタイプわからん。


4 名前: デフォルトの名無しさん 投稿日: 2001/07/11(水) 16:48
あれれ?デザパタスレって、まだ無いんだっけ!

本の話は…持ってない人が辛いんで、
該当部分を引用するとか、もしあればURLを書くとか
(英語しかなくてもとりあえずないよりはマシ)
してくれると助かる。


5 名前: 2 投稿日: 2001/07/11(水) 16:55
>>4
大昔にはあったのかも知れないけれど、探したら無かった。

で、該当する箇所を引用します。

インスタンス化されるクラスが、例えば、ダイナミックローディングにより、
実行時に明らかになる場合。
(p128、デザインパターン初版、SOFTBANK社)

これだけじゃ、分からないかなぁ。やっぱり。


6 名前: 適当に 投稿日: 2001/07/11(水) 17:00
[ja]
Java言語で学ぶデザインパターン入門
http://www.hyuki.com/dp/
Javaプログラマのためのデザインパターン入門
http://objectclub.esm.co.jp/DPforJavaProgrammers/DPforJavaProgrammers.html
デザインパターンの骸骨たち
http://www11.u-page.so-net.ne.jp/tk9/ys_oota/mdp/

[en]
Patterns Home Page
http://hillside.net/patterns/


7 名前: 2 投稿日: 2001/07/11(水) 17:05
>>6
見た事の無いWebページもありますので、読んでみます。
ありがとう。


8 名前: 追加 投稿日: 2001/07/11(水) 17:09
[ja]
デザインパターン with JAVA
http://www.ff.iij4u.or.jp/~ahirusan/Java/patterns/patternIndex.html
Javaなページ
http://home.catv.ne.jp/dd/chiba/ken/Java/JavaMain.html
デザインパターン入門 (ちとわかりずらい…)
http://www.netlaputa.ne.jp/~hijk/study/oo/designpattern.html


9 名前: デフォルトの名無しさん 投稿日: 2001/07/11(水) 17:14
>>5
>インスタンス化されるクラスが、例えば、ダイナミックローディングにより
>実行時に明らかになる場合。
>これだけじゃ、分からないかなぁ。やっぱり。

…わかっちゃった(^^;

インスタンス1号を作るとき、そのクラスとして
後からロードされるクラスを使いましょう、って場合だ。

で、インスタンス2号を作りたくなった辺りのソースでは
インスタンス1号は(Scopeとか的に)見えているんだが
そのクラスは見えないようになっている、という場合だ。

じゃあインスタンス1号に2号を(本人と同じクラスで)
作らせちゃえばいいじゃん、という話。

喩え1:
謎の悪の組織デスト某に作られた仮面ライダ1号は
戦いに疲れて仲間が欲しくなったのだが、
いまさら謎の悪の組織に再びのこのこ出向くわけにもいかない。
しかたがないので自分の体を真似して自力で2号を作った。

喩え2:
ゲイツのソフトだろうがLinuxだろうが
元ファイルがあればピーコするのは同じ手順でできる!(わら

うーん。でもこれだと、Factory系のパターンとの違いが
際立たないというか、なんか変だな。
俺間違いかも。突っ込み歓迎。


10 名前: さらに 投稿日: 2001/07/11(水) 17:20
デザインパターン
http://piza.2ch.net/tech/kako/976/976074878.html
「デザインパターンって、○○のようなもんだよ」
http://piza.2ch.net/test/read.cgi?bbs=tech&key=994690114

mogura (2chLinuxer氏に敬礼!)
http://2ch.dyn.to/


11 名前: 2 投稿日: 2001/07/11(水) 19:35
>>9
私もわかったかも。

Cloneオペレーションを定義を定義してある、Prototypeがまずある。
で、Prototypeの派生クラスConcretePrototypeA、ConcretePrototypeB
と言ったクラスがある。

ロードをする部分(メッソドやクラス)は、具象クラスの名前なりがわかっているわけだ。

でも、実際にロードされたクラスを使うクラスでは、具象クラスを知らない。
けれど、新たにインスタンスが欲しい。
しかし、具象クラスについて知らないから、コンストラクタを呼べない。

結果、複製すればいいということになる。
ポリモルフィズムで適切なCloneメソッドが呼ばれるから。

という感じ?


12 名前: 2 投稿日: 2001/07/11(水) 19:36
 ただ、クラスをダイナミックローディングする仕組みを使ったことが
無いから、根本的なところが間違っているかも。


13 名前: デフォルトの名無しさん 投稿日: 2001/07/11(水) 19:38
>>8
>>10
親切な人だ。
ありがとうございます。


14 名前: 9 投稿日: 2001/07/11(水) 19:40
書き方がいまいち悪かったと反省。

>インスタンス1号を作るとき、そのクラスとして
>後からロードされるクラスを使いましょう、って場合だ。

ここでいう「後」とは、そのプログラムが起動された後という意味のつもり。
動的ロードがあたりまえのように出来る言語では、
大騒ぎするような話じゃあないわな。
C++だと標準では出来ない(VCやC++Bみたいに
色々手を尽くしてそれっぽく実現してる奴はいるが)。
rubyみたいな動的でインタプリタな言語なら
とーぜんのように(すまんmatz氏)ついている機能。

喩え1や2は、そういう意味では悪くないと思う。
インスタンス1号を作る時点では、間接的にせよClassを使えたわけだ。
で、2号の辺りでは間接的だろうがなんだろうがそのClassを
「再びソース上で」呼ぶことが出来ない、という状態。


15 名前: 9 投稿日: 2001/07/11(水) 19:47
ごちゃごちゃ言うまでもなく11で既に判ってるようなんで
まぁいいか。

>ポリモルフィズムで適切なCloneメソッドが呼ばれるから。

それそれ。

ただ、蛇足だがObjectiveCやDelphiだと
「クラスメソッドのポリモルフィズム」を使えるので、
そーいう意味でのCloneは、あんまり必要なかったりする。

#もちろん、インスタンス1号(の状態)を2号に含めたい場合は、
#ピーコ(Clone)のほうがずっと自然なやり方だが。
#今回の話はやっぱりどっちかってーとBuilder系パターンの話が
#微妙に混線してるような気がする。

Smalltalkやrubyなんかでも指摘されていることだが、
デザパタのいくつかは、対象言語の柔軟性の低さ
(つまりあるパターンを直接ライブラリ化できないこと)を
パターンということにしてカバーしている(わら)という節もある。


16 名前: 投稿日: 2001/07/11(水) 20:43
>>15
ありがとうございます。
どうにか分かりました。

>デザパタのいくつかは、対象言語の柔軟性の低さ
>(つまりあるパターンを直接ライブラリ化できないこと)を
>パターンということにしてカバーしている(わら)という節もある。
みたいですね。
 私はSmalltalkは知らないのでよくわからないのですが、
「Smalltalkではあまりこの使い方に意味は無い」といった感じの
記述を、デザインパターンの本の中でしばしば見かけます。


17 名前: 1 投稿日: 2001/07/23(月) 09:53
たまには上げてみる。
かなり人気無いな、このスレ。
ターゲットを絞りすぎたのかも。
「パターンを全般的に扱うスレ」とかにした方が、良かったかなぁ…。


18 名前: うむ 投稿日: 2001/07/23(月) 09:57
さいきんデザインパターンを勉強しはじめたが・・・・

ククク・・・・
       まったくわからんよ・・・


19 名前: デフォルトの名無しさん 投稿日: 2001/07/23(月) 12:30
Singletonパターンしか使ってないなぁ・・・・。
SingletonDialog便利(笑) 


20 名前: デフォルトの名無しさん 投稿日: 2001/07/23(月) 21:58
AbstractFactory
の工場は、
いろんな部品をまとめて提供するもの
て解釈でいいですか?


21 名前: デフォルトの名無しさん 投稿日: 2001/07/23(月) 22:41
>>20 全然違う。


22 名前: デフォルトの名無しさん 投稿日: 2001/07/23(月) 23:21
>>20
ナニ(1つでも複数でも)を作るかが、
大筋は決まってるんだけど、
完全に具体的というほどにはまだ
決まってない(=Abstract)、という工場だ。

たとえばプラモ自動車用に
10種類くらいの部品を作る工場で
その設計とかも大抵出来ているし
金型まで用意済んでるんだが、
その金型にナニ色の樹脂を流しこんで製品作るか?は
まだ決まってない、みたいな工場(のクラス)。

で、その工場クラスを継承(カスタマイズ)して、
赤プラモ製造工場や、青プラモ製造工場を、作るわけな。

ところで結城氏の本。
「自分の言葉」で語っている(しかもドキュじゃない)のは
素晴らしいが、それ故なのか、時折過不足を感じる記述も有るなあ。
90点以上の出来(=並大抵のもんじゃない)なのは確かだが。


23 名前: デフォルトの名無しさん 投稿日: 2001/07/24(火) 10:00
ありがとう!
ぜんぜん違うっていわれたけど、そうでもなかったみたい


24 名前: 名無しさん 投稿日: 2001/07/24(火) 10:59
Javaをつかったデザインパターンの本は3冊読んだけど
結城氏の本は簡単でネチっこく説明してくれてるので一番良いと思った。

ところで、結城氏の本のPrototypeの説明(P75)にある
「種類が多すぎてクラスにまとめられない場合」
にProtptypeを使えと言うのが良くわかんない。