【GoF】デザインパターン 3

このエントリーをはてなブックマークに追加
11
賢者は歴史に学び、愚者は自分の経験に学ぶ

関連情報は >>2-10
2デフォルトの名無しさん:04/09/17 11:35:49
過去スレ
デザインパターンの単純そうな質問 - (1)
http://piza.2ch.net/test/read.cgi?bbs=tech&key=994690114
リファクタリング、させてくれ
http://pc5.2ch.net/test/read.cgi/tech/1081863662/l50
【XP】Agile Process 第2イテレーション【UP】
http://pc5.2ch.net/test/read.cgi/tech/1091773629/l50
【綺麗】デザインパターンは美しい!【究極の美】@プログラマー板
http://pc5.2ch.net/test/read.cgi/prog/1089077456/l50
3デフォルトの名無しさん:04/09/17 11:36:23
Web Page [ja]
デザインパターンあれこれ
http://www.dmz.hitachi-sk.co.jp/Java/Tech/pattern/
Javaプログラマのためのデザインパターン入門
http://objectclub.esm.co.jp/DPforJavaProgrammers/DPforJavaProgrammers.html
Javaなページ
http://home.catv.ne.jp/dd/chiba/ken/Java/JavaMain.html
デザインパターン入門 (ちとわかりずらい…)
http://www.netlaputa.ne.jp/~hijk/study/oo/designpattern.html
Inversion of Control コンテナと Dependency Injection パターン
http://www.kakutani.com/trans/fowler/injection.html
Inversion of Control
http://wiki.bmedianode.com/Spring/?Inversion+of+Control
Smalltalkイディオム(GoF本のサンプルコードが読めない人のためのSmalltalk入門)
http://www.sra.co.jp/people/aoki/SmalltalkIdioms/index.htm
[en]
Patterns Home Page
http://hillside.net/patterns/
Design pattern (computer science) - Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/Design_pattern_(computer_science)
4デフォルトの名無しさん:04/09/17 11:36:50
書籍
増補改訂版Java言語で学ぶデザインパターン入門
http://www.hyuki.com/dp/index.html
Java言語で学ぶデザインパターン入門 マルチスレッド編
http://www.hyuki.com/dp/dp2.html
独習デザインパターン
http://www.amazon.co.jp/exec/obidos/ASIN/4798104450/
Javaデザインパターン徹底攻略 標準プログラマーズライブラリ
http://www.amazon.co.jp/exec/obidos/ASIN/4774115797/
Javaの格言
http://www.amazon.co.jp/exec/obidos/ASIN/4894711877/
Javaの鉄則
http://www.amazon.co.jp/exec/obidos/ASIN/489471258X/
Effective Java
http://www.amazon.co.jp/exec/obidos/ASIN/4894714361/
オブジェクト指向における再利用のためのデザインパターン
http://www.amazon.co.jp/exec/obidos/ASIN/4797311126/
リファクタリング
http://www.amazon.co.jp/exec/obidos/ASIN/4894712288/
アジャイルソフトウェア開発の奥義
http://www.amazon.co.jp/exec/obidos/ASIN/4797323361/
5デフォルトの名無しさん:04/09/17 12:24:14
書籍一つ加えておきます。
「C#デザインパターン」
http://www.amazon.co.jp/exec/obidos/ASIN/4822281698/
6デフォルトの名無しさん:04/09/17 14:14:05
書籍
デザインパターンによるJava実践プログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4756141552/
Java実践プログラムによるデザインパターン入門講座
- Swingプログラムで体得する23のパターン
http://www.amazon.co.jp/exec/obidos/ASIN/4894712563/
J2EEデザインパターン
http://www.amazon.co.jp/exec/obidos/ASIN/4873111781/
7デフォルトの名無しさん:04/09/17 14:25:39
信者ウザイ
8デフォルトの名無しさん:04/09/17 14:30:28
デザパタ信者というよりJAVA厨の溜まり場なんだよ(だから低レベルで浮き世離れしてる)
9ぱたんまんせ:04/09/17 20:43:03
POSA本とPLoP本もよろしくね!!!

官話九大

IBMのe-Business patternsって、
アメリカ合衆国のEA決める官庁でもネタにされてるくらい、
認知率が高くて、国内でもITなんたら推進室が寝たの孫引きしてる。
まぁ、飴ちゃんは「ベストプラクティス!!!」とか好きだし、
国内の馬鹿役人は飴理科追従が仕事みたいなもんだし、ぷぷぷ

それを真似して .NET pattern & practice とかやってるM$は、なんか哀れ
10デフォルトの名無しさん:04/09/17 21:03:48
このスレの命題にも言えることだが
>POSA本とPLoP本
無理やりこういう略しかたする必要あるのか?
頭悪すぎ
11デフォルトの名無しさん:04/09/17 21:49:07
>官話九大
使い方が間違ってるからわざと違う漢字にしてるのですね。
12デフォルトの名無しさん:04/09/17 22:01:40
>>11
そのとおりですが、何か?
13デフォルトの名無しさん:04/09/17 22:39:55
何とも言ってませんが?
14デフォルトの名無しさん:04/09/17 22:56:45
>>9
すんません。まじで何のことを言っているのかさぱーりです。
わかるよーに説明希望
15デフォルトの名無しさん:04/09/18 00:13:10
>>14 かまわないほうが...
16デフォルトの名無しさん:04/09/18 12:38:21
痴呆老人がネガティブな粘着をしてるようだな

さっさと市ねよ
17デフォルトの名無しさん:04/09/18 19:02:30
関係ないが前スレの976は俺でその後何にも書いてないのに
話が進んでるのはなぜだ…?
18デフォルトの名無しさん:04/09/18 19:10:33
>>17
それは俺がレス番号の間違いに最後まで気づかなかったからだ
今気づいた
マジでスマソOTL
19デフォルトの名無しさん:04/09/18 20:35:25
>マジでスマソOTL
あ、イヘイヘ、面白かっただけなんで。
20デフォルトの名無しさん:04/09/19 05:37:45
デザインパターンを使うと、メソッド1つだけのクラスやら
実質1つのクラスしか使っていないインターフェイスやらが
たくさん増えるんだがこれでいいのでしょうか?
クラスの数ばかりが増えてあまり意味が無いような気がしてしまいます。
21デフォルトの名無しさん:04/09/19 06:46:10
>>20 お前デザパタまったく理解出来てない。そういう対策もデザパタに書いてある。ちゃんとデザパタ読んで勉強し直せ。
22デフォルトの名無しさん:04/09/19 09:41:58
A「ユダヤ人はどの民族よりも優れています。」
B「その根拠は?」
A「ユダヤ教の教典にそう書かれています。」
B「・・・」
23在日参政権反対:04/09/19 11:14:46
>20
デザパタ本に書かれてるかはわすれたが、
そのクラスの役割にメソッドの数は関係ないし、インターフェースの本質は役割の規定だが、たまたまその役割を受け継ぐクラスがひとつだけだったのであって、その役割の規定が正しいのなら問題ない
24デフォルトの名無しさん:04/09/19 11:15:50
>>21
そういうのはデザパタ本じゃなくてリファクタリング関係の本じゃないのか?
25デフォルトの名無しさん:04/09/19 11:27:16
厨房隔離スレwww
26デフォルトの名無しさん:04/09/19 12:03:21
オブジェクト指向と同じで、厨がキモイな

デザインパターンやってみる
 ↓
理解できない
 ↓
やつ当たりで2chで暴れる
27デフォルトの名無しさん:04/09/19 13:08:29
>>26
それは無理がある。デザパタを理解しないうちに2chで暴れると、かえって
手負いの傷を負う。叩きのめされるからなw
28デフォルトの名無しさん:04/09/19 13:50:12
デザパタは勉強してるけど、
実際にコーディングで役に立つことは少ないかも・・・

decoratorパターンなんて、java.io以外で
有用な例を挙げられないのだから・・・
29デフォルトの名無しさん:04/09/19 14:39:20
そうですか。
30在日参政権反対:04/09/19 14:47:34
えぇぇぇ使いまくりですが...
そのままじゃないですけど
31デフォルトの名無しさん:04/09/19 15:07:01
技術板でコテハンやめろ、ウザくてむしろ賛成したくなってくる
いや、それが狙いか?
32デフォルトの名無しさん:04/09/19 16:21:09
同意、しかもつまらんレスばかりだし。
33乾燥者:04/09/19 16:47:45
コテハンにします。
34デフォルトの名無しさん:04/09/19 19:26:22
>>20
> メソッド1つだけのクラスやら実質1つのクラスしか使っていない
> インターフェイスやらがたくさん増えるんだがこれでいいのでしょうか?

ブロック/クロージャがない言語だとそうなってしまうのは仕方ないと思われ
35デフォルトの名無しさん:04/09/19 19:38:11
>>32
何を期待しているのかと。
36デフォルトの名無しさん:04/09/19 21:22:31
GoF の読み方は「ゴフ」
37デフォルトの名無しさん:04/09/19 23:26:02
乙一の本は「ゴス」
38デフォルトの名無しさん:04/09/20 08:43:15
classloaderもデコレータパターンに近い気がするけどどうだろ。
39デフォルトの名無しさん:04/09/20 10:07:09
>>21
おまえ普及させる気あるのかこのやろう。
新参者にはやさしく愛撫しながらスマイルで答えてさしあげろ

いや別に普及させる気ないならいいんだけど。
40デフォルトの名無しさん:04/09/20 10:35:11
>>38
振る舞いという意味ではChain of Responsibilityパターンのような気が。
どっちでもいいんだけどね。構造で分類するか振る舞いで分類するかの違いだけで。
41デフォルトの名無しさん:04/09/20 11:03:18
たんなる再帰呼び出しと違う?
42デフォルトの名無しさん:04/09/20 11:45:58
>>41
クラスやオブジェクトの構造に言及している点が違う。
再帰呼び出しといった場合、手続き内から同一手続きを呼び出すという
手続きの振る舞いを述べているだけだが、
DecoratorパターンやChain of Responsibilityパターンと言った場合、
クラスの静的構造(クラスローダが別のクラスローダへの参照を持っている、
全てのクラスローダはClassLoaderクラスのサブクラスである、など)についても
述べたことになる。
「オブジェクト指向で再帰呼び出しするなら普通そうするだろ」と思うかもしれないが、
DecoratorパターンやChain of Responsibilityパターンでない再帰呼び出しもあり得る
(メソッド引数に移譲先のオブジェクトを渡す場合)のでそうとも言えない。
43デフォルトの名無しさん:04/09/20 13:11:32
>>42
下らないことにもったい付けてるだけ
44デフォルトの名無しさん:04/09/20 13:37:11
ダメだよ、自分が不勉強だって認めなきゃ(クス
45デフォルトの名無しさん:04/09/21 07:22:37
>>44 あんたレベル低すぎだよ・・・
46デフォルトの名無しさん:04/09/22 00:14:02
ていどひくい
47デフォルトの名無しさん:04/09/22 07:47:20
会社で何かいやな事でもあったのかと。
48デフォルトの名無しさん:04/09/22 07:51:36
>>28
>decoratorパターンなんて、java.io以外で
>有用な例を挙げられないのだから・・・
デザパタで成果を挙げているのはライブラリやフレームワーク側だけで
フロントのアプリケーションでは使わない結論。
49デフォルトの名無しさん:04/09/22 09:47:13
Java厨は自分のアプリをすべてデザインパターン化しようと必死だぞ
50デフォルトの名無しさん:04/09/22 10:48:49
>>46
すぐにレベルが低いとかそういう事いうやつは
スネオ並って事ですね。
51在日外国人参政権反対:04/09/22 11:23:18
>48
そこまでよく出来たフレームがあるとフロントは楽でいいですね
52デフォルトの名無しさん:04/09/22 11:47:59
Java厨曰く
せっかく覚えたデザパタに従ってないライブラリは全て糞
53デフォルトの名無しさん:04/09/22 13:45:47
デザインパターン通りかどうかが
判断基準の全てなんだよな
JAVA厨って
だから糞な物作って自己満足(以下自主規制
54デフォルトの名無しさん:04/09/22 14:47:26
以上、テンプレ終了

腐った餌は放置の方向で
55在日外国人参政権反対:04/09/22 14:50:08
せっかく新スレになったんだから、Java厨批判で無駄に汚すの止めてくれ
56デフォルトの名無しさん:04/09/22 16:27:34
てかJava厨消えてくれ
57デフォルトの名無しさん:04/09/22 17:46:03
コテハンも一緒に消えてくれ
58デフォルトの名無しさん:04/09/22 17:51:33
せめてデザパタの話をしれ
59デフォルトの名無しさん:04/09/22 20:29:34
>>48
そこでサクッと
フレームワークを
ageれば
みんな
納得するんだけど
60sage:04/09/22 22:55:37
Singleton パターンを用いるシーンが思いつきません。
クラス変数をプロパティとして持ち、そのアクセサ・メソッドを持つクラスで、
事足りるのでは?と思ったのですが、どうなのでしょうか?

インスタンスが一つだけという目的ならクラス変数を使用するようにすれば
良いのでは、と。

Java 厨と呼ばれても仕方が無い質問かもしれませんが、分かりやすく
教えていただければ助かります。
61デフォルトの名無しさん:04/09/22 23:14:01
>Singleton パターンを用いるシーンが思いつきません。

無いから。
62デフォルトの名無しさん:04/09/22 23:19:30
俺は FlyWeight を兼ねて1つのクラスを Singleton にしたことがある
あまり意味のあることだとは思えなかったが、とりあえずやってみて結局意味無かった
63デフォルトの名無しさん:04/09/22 23:28:16
俺はログ出力用のクラスを Singleton にしたことがある
あまり意味のあることだとは思えなかったが、とりあえずやってみて結局意味無かった
今は反省している。
64デフォルトの名無しさん:04/09/22 23:29:59
ここでJava厨のデザパタ鵜呑み発言↓
65在日外国人参政権反対:04/09/22 23:30:51
サブシステムとしてグローバル的に使うものに多用してまふ
スレッドマネージャーとかそういう奴
66デフォルトの名無しさん:04/09/22 23:40:55
さすがJava厨のデザパタ鵜呑み発言↑
6763=66:04/09/22 23:43:51
つーか、そろそろデザパタの話をしようぜ
もうこのスレじゃ無理っぽいけど。
68在日外国人参政権反対:04/09/22 23:50:02
>66
ではそういうときにジャバ厨でない人のやり方をどうぞ
69デフォルトの名無しさん:04/09/22 23:50:44
1. Singletonのインスタンスを2つ以上に変更できる
2. Singletonのインスタンスの振る舞いを、継承により変更できる

1. は、正直言って利点とは思えん。GoF本にはそう書いてあるが
そんなシチュエーションに出会ったことがない。

2. は、インスタンスメソッドなので継承が使えるということ。staticメソッドだと無理だから。
これを行う場合、ちょっとした言語依存の小細工が必要になる。
Javaなら、JDBCドライバのようにstatic initializer使えば何とかなるけど、
言語によっては他のパターン(Abstract Factory)を併用する必要がある。

ちなみに2だが、Webサービスクライアントで、通常時とデバッグ時で
異なるSingletonを渡して振る舞いを変えるコードを書いたことがある。
70デフォルトの名無しさん:04/09/22 23:52:48
いま開発中の会社のアプリは大半のクラスがSingletonになってる。
デザパタは分かりやすくていい。
71デフォルトの名無しさん:04/09/22 23:56:21
>>70
ご愁傷様です。これだからSingletonパターンは危険なんだ。
72デフォルトの名無しさん:04/09/23 00:06:15
>>71
いや、プロトタイプベースな言語ならば問題ない……と言ってみる
73デフォルトの名無しさん:04/09/23 00:07:32
>>69
>1. Singletonのインスタンスを2つ以上に変更できる
>2. Singletonのインスタンスの振る舞いを、継承により変更できる
3.どこからでも参照できる。

一番の利点だね。
74デフォルトの名無しさん:04/09/23 00:10:23
>>73
staticメソッドもどこからでも参照できますが。
75デフォルトの名無しさん:04/09/23 00:13:45
それじゃ、
staticメソッドを使わず、あえてSingletonを使う意義というものを
まじめに議論して見ましょう。

FIGHT! ⊂(゚(エ)゚)⊃
76デフォルトの名無しさん:04/09/23 00:14:42
コーディングしている全てのクラスがFacadeパターンと言えないか?
77デフォルトの名無しさん:04/09/23 00:18:56
>>75
例えば ClassA を Singleton にしても ClassA のオブジェクトとしてつかえることに変わりは無い
Singleton な ClassA をある日突然 Singleton じゃなくしても何も問題は起きない

>>76
そうなればより正しい設計といえるんじゃないか?
7877:04/09/23 00:21:27
>>77 の下部
別に俺はデザパタヽ(´ー`)ノバンザーイじゃないとは言っておく
ただし、ごちゃごちゃしたクラスの塊は扱いたくない
7963=66=67:04/09/23 00:31:03
>>68
ごめんなさい。
ちょっと矢印ではさんでみたかっただけなんです。
悪気はなかったんです。
ごめんなさい。
8060:04/09/23 00:31:47
思ったより反応があったので喜んでいるのですが、ふと疑問に感じたことがあります。

>>69
>2. Singletonのインスタンスの振る舞いを、継承により変更できる
継承する場合、親クラス (Singleton) のコンストラクタへのアクセスって、
どうするのでしょうか?

>>74
私もそう思いました。

>>77
>Singleton な ClassA をある日突然 Singleton じゃなくしても何も問題は起きない
って、ClassA を Singleton だという前提で使用しているクラスがあれば、問題になるのでは?
81デフォルトの名無しさん:04/09/23 00:56:40
>>80
一段落目:コンストラクタはprotectedで公開するだろうしサブクラスからは問題なくアクセスできるんちゃう?
二段落目:staticメソッドでアクセスできてもインスタンス化してないんじゃ状態をもてないでしょ。
三段落目:Singletonインスタンスへのリファレンスが一意であるとしてsomeObj == otherObjとしたときは問題になるかも。
でも、そういうことを避けるために隠蔽をかけるわけで、someObj.equals(otherObj)とやらせて==使ったときの挙動は保障しませんよとする。
C++とかではグローバルなスコープに一個だけオブジェクトを作成して他からexternさせる形をとる変わりに、
ファクトリメソッド使わせて一個のインスタンスを共有させるとか。
82デフォルトの名無しさん:04/09/23 00:58:31
>>60
>クラス変数をプロパティとして持ち、そのアクセサ・メソッドを持つクラスで、
>事足りるのでは?と思ったのですが、どうなのでしょうか?

それはMonostateパターンという名前が付いている。
83デフォルトの名無しさん:04/09/23 01:00:29
>>80
んーと、Java依存の話だけどこう。
class Singleton{
 static protected Singleton instance;
 // Singletonインスタンスを取得する例のコード。略。
}

class SubSingletonA{
 static{
  instance = new SubSingletonA();
 }
}

class SubSingletonB{
 static{
  instance = new SubSingletonB();
 }
}

当時はこうやった。instanceがprotectedなところは、
Singletonのコンストラクタでセットすれば良かったかも。こんな感じ。
private Singleton(Singleton s){
 instance = s;
}
で、サブクラス側はこう。
private SubSingletonA(){
 super(this);
}
色々書いていて、もはやAbstract Factoryなんじゃないかと思ってきた。
実際このクラスは様々なDAOのFactoryだったわけで。
8469=83:04/09/23 01:04:32
それから、上のSingletonを使う側のコードはこんな感じです。最初の1回目にこうやって、
if(Bを使いたい){
 Singleton instance = SubSingletonA.getInstance();
} else {
 Singleton instance = SubSingletonB.getInstance();
}
あとはAかBか気にせずに以下のように使用する。
Singleton instance = Singleton.getInstance();

JDBCみたいにClass#forName()でもいいんだけど。
85デフォルトの名無しさん:04/09/23 01:14:16
ぶっちゃけ Java案件って保守性低いよね。
個人の趣味が出すぎる
86デフォルトの名無しさん:04/09/23 01:15:17
フレームワークをつかえ
8760:04/09/23 01:21:56
>>81
>一段落目:コンストラクタはprotectedで公開するだろうしサブクラスからは問題なくアクセスできるんちゃう?
protected で宣言している場合は継承できると思いますが、同一パッケージから
new 出来るっていうのは、Singleton パターンと呼べるのでしょうか?

>二段落目:staticメソッドでアクセスできてもインスタンス化してないんじゃ状態をもてないでしょ。
状態、と表現するのか分からないのですが、クラス変数で良いのでは?と思ったのです。

>>82
Monostate パターン....勉強不足でした。
これから調べてみます。

引き続き、この板は読みつづけますが、レス下さった皆さん
ありがとうございました。
88デフォルトの名無しさん:04/09/23 01:22:46
フレームワーク使っててもなんだかんだで自己満足な美意識を存分に発揮して
おかしなコードを書くやつが出てくる。


Cの案件ではコーディングルールを一律化して車輪は厳禁にしてるんで
仕事は早いしPGの差し替えも利く。
89デフォルトの名無しさん:04/09/23 01:30:18
90デフォルトの名無しさん:04/09/23 01:31:15
好きにすればいいと思うよ
91デフォルトの名無しさん:04/09/23 01:42:09
設定ファイルはSingletonの用途の成功例だろうと思うが
92デフォルトの名無しさん:04/09/23 02:13:28
百済ねー
93デフォルトの名無しさん:04/09/23 07:05:49
デザパタつかってりゃ、みんな成功例なんだろ
JAVAのライブラリの〜は、〜パターンの成功例だしな( ^∀^)ゲラ
94デフォルトの名無しさん:04/09/23 07:38:54
なんか、

Javaを莫迦にする香具師は死んだほうがいい
http://pc5.2ch.net/test/read.cgi/tech/1092308415/

ここと雰囲気似すぎてる様な。






とりあえず、
Javaな人はGoFスレ出入り禁止にしよう!
このスレこないでね!
95デフォルトの名無しさん:04/09/23 07:54:23
馬鹿はニヤニヤしながら放置
自演始めてもぐっとこらえて放置
96デフォルトの名無しさん:04/09/23 08:29:18
> Javaな人はGoFスレ出入り禁止にしよう!
そうでもしないと
いつまでたっても建設的な話にならない悪寒
97デフォルトの名無しさん:04/09/23 08:30:07
>ぐっとこらえて放置
つまり貴方はJAVA厨ってことですね?
98デフォルトの名無しさん:04/09/23 10:20:06
>>85
>>88
>>92
>>93
>>97
.dispose
99デフォルトの名無しさん:04/09/23 10:37:05
>>93
「デザパタつかってりゃ、みんな成功例なんだろ」

「デザパタ使っていれば成功です。」
誰かに言われ言葉の返事?
このスレには全く書かれてない。
すると貴方の職場で言われた?
ではなぜこのスレに返事するので?
職場では返事できないから?

なんてね。
100デフォルトの名無しさん:04/09/23 12:31:17
>>99 日本語勉強してから出直してこい
101デフォルトの名無しさん:04/09/23 16:22:47
>>60
DBCP
102デフォルトの名無しさん:04/09/23 21:52:29
ジブロモクロロプロパン・・・じゃないな
データーベースコネクションプール?
103デフォルトの名無しさん:04/09/24 01:05:28
ドラゴンボール厨房パワー
104デフォルトの名無しさん:04/09/24 07:41:57
>>10をもう一度読むこと
105デフォルトの名無しさん:04/09/24 13:41:05
必死で覚えたデザパタを
使うことが目的なんだから
使ってあれば成功例なのは当然
106デフォルトの名無しさん:04/09/29 15:41:14
Singletonの利点は、あくまでそれが生成のみに関るってことだと思う。
例えば基本クラスXと派生クラスXA・XBがあって、XAとXBのインスタンスを
それぞれひとつに制限したいとする。
でも、Monostateでは共通部分(特にクラス変数)をXに書くわけにはいかないよね?
(C++ならtemplate等で実装共有するって手もあるだろうけど)
Singletonは生成方法を制限しているだけで、XAとXBは独立したインスタンスだから
そういう問題は出ない。

あと、>>74の言うようにメソッドまでstaticにするとさらに問題が……。
俺は以前、高速化のためにSingletonをやめて変数/メソッドを全部staticに
したことがあるんだけど、二つのインスタンスを共通の方法でアクセスする方法が
なくなって難儀した(w
(実装はtemplateやマクロで共有。C++の話ね)
そんときはアクセス用のクラスを作って、アダプタかませてしのいだけど。
107デフォルトの名無しさん:04/09/29 17:32:47
>>106
正解
108デフォルトの名無しさん:04/09/30 03:16:22
またJava厨の自演かよ
109デフォルトの名無しさん:04/09/30 10:52:49
>>108
正解
110107:04/09/30 12:53:09
>>108
不正解
106 と 107 は別人だ

どちらにしろ、言ってることはあってる
111デフォルトの名無しさん:04/09/30 13:01:43
まだいってるよ
誰が見ても >>106 = >>107 = >>110 だよな
あんな見当はずれなレスに
正解とかいう奴本人しかいないって(稾
112106:04/09/30 13:18:25
>>111
見当はずれだったか? すまん。

でも俺、コードはC++で書く方が好きなんだけど……。
それでもJava厨なのか? 訳わかんなくなってきた。
113デフォルトの名無しさん:04/09/30 13:38:23
放置
114107:04/09/30 15:25:12
>>111
ま、真相は俺と 106 氏のみが知っているということでFA
おまえら、別に俺が 106 氏と同一人物じゃなくても構わないんだろ?
ならどっちだっていいじゃねーか


それから付け加えると、Singleton は“生成に関するパターン”だな。
コレくらい、感覚でわからないのか?


ちなみに俺は C++/C# だな。そもそも Java は遊びでしかやらん
115デフォルトの名無しさん:04/09/30 16:23:32
>>108 = >>109 = >>111みたいな馬鹿へ丁寧にレスしなくていいよ。
荒れるだけだから。
116デフォルトの名無しさん:04/09/30 19:19:42
これがJava厨って生き物ですか(;´Д`)
117デフォルトの名無しさん:04/10/01 01:15:47
さわるなよ〜
118デフォルトの名無しさん:04/10/01 07:49:00
このスレには「Java厨」は居ないが「Java厨かよ」と書き込んで話題を止めるヤツが常駐しているな。
119デフォルトの名無しさん:04/10/01 22:29:05
>>118
正解
120デフォルトの名無しさん:04/10/01 23:32:53
またJava厨の自演かよ
121デフォルトの名無しさん:04/10/02 00:07:42
ageで書いてるあたり120は本物の池沼くさいなw
122デフォルトの名無しさん:04/10/02 00:11:44
>>120
正解
123在日外国人参政権反対:04/10/02 00:35:37
Java中とか言ってる奴







  馬鹿じゃねーの
124デフォルトの名無しさん:04/10/02 06:03:54
Java厨氏んで
125デフォルトの名無しさん:04/10/02 07:31:56
>>123
荒らしは死ね
Rbuy1!!!!!!!!!!!!11Rbuysaikyou !!!!!!!!!!
Rubysaikougengo !!!!!!
Rubuyantoapojnte4p222222222222
Ruby!!!!!!!!!!
126デフォルトの名無しさん:04/10/02 10:00:39
もっともデザインパターンに向いている言語はマクロアセンブラ
127デフォルトの名無しさん:04/10/02 16:21:10
もっともデザインパターンに向いている言語はひまわり
128デフォルトの名無しさん:04/10/02 16:21:50
もっともデザインパターンに向いてる言語はHSP!!!
129デフォルトの名無しさん:04/10/02 16:31:09
いいかげんJava厨キエロ
130デフォルトの名無しさん:04/10/02 17:05:38
C#の言語仕様はJavaの言語仕様を全て含んでいるので
Javaでできることは全てC#でそのままできる。
それなのに何故
「デザインパターンに最も適した言語はJavaだ」
という言説が生まれるのか?
よく分からんな・・・
言語仕様がシンプルだからいい、とでも言うのか???
131デフォルトの名無しさん:04/10/02 18:28:42
>>130
本がいっぱい出てるから。

いやまじでこれは大きいよ。
132デフォルトの名無しさん:04/10/02 20:33:46
>>130
どの発言に対するレス?

>「デザインパターンに最も適した言語はJavaだ」
どこに書いてあるの?
133デフォルトの名無しさん:04/10/02 21:18:45
デザインパターンに最も適した言語はRuby!
134デフォルトの名無しさん:04/10/02 22:46:54
>>132
脳内のヒト。
135デフォルトの名無しさん:04/10/03 11:57:15
>>130
(´∇`)ケラケラ
C# に Java のような匿名クラスなんて無いよ
Java に C# のようなデリゲートなんて無いよ
C# と Java の内部クラスの挙動は激しく違うよ
136デフォルトの名無しさん:04/10/03 13:18:18
というか>>130は「デザインパターンに最も適した言語はJavaだ」 という言説をどこで読んだんだ?
このスレで話題に上がっていないことを、突然語られても困るんだが。
137130:04/10/03 16:23:11
>135
匿名クラスも内部クラスもデザインパターンで使わないだろ?
そんな瑣末な例を挙げるなよ。
138デフォルトの名無しさん:04/10/03 16:33:09
宗教戦争はもうたくさんだ
139デフォルトの名無しさん:04/10/03 16:35:35
>>138
C ++字軍に参加しませんか
140135:04/10/03 16:36:09
>>137
130 の上から2行に突っ込んだだけだが……
デザパタとは関係ない部分であるにしろ、間違った認識を持つのはマズいぞ?
141デフォルトの名無しさん:04/10/03 16:38:04
>>136
このスレはこのパターンの繰り返し。
142デフォルトの名無しさん:04/10/03 16:39:20
>>136

あー>>130>>99 これだろ。
143.Net陣営:04/10/03 21:20:48
>>138
では戦争を終わらせる為の戦争に参加したまえ。
我々は全てを飲み込む。
144デフォルトの名無しさん:04/10/03 21:22:31
ブビ廚なんぞハナっから相手ではないわ
145デフォルトの名無しさん:04/10/04 00:13:40
デザインパターンくらい知ってることが基本の職場に転職した。
意思疎通が格段に違う。
設計やビジネスプロセスの検討においても、「いわゆるCompositeで」とか平気で使えるし。

相手にパターンの知識がないことを前提におけない前職よりははるかにやりやすい。
146デフォルトの名無しさん:04/10/04 00:29:17
そらよかったね。
147デフォルトの名無しさん:04/10/04 01:56:28
そういうとこは開発プロセスも
アジャイルとかいう奴なんでしょうか。
148デフォルトの名無しさん:04/10/04 02:01:42
>>145
どこの会社か教えてくれ。
149デフォルトの名無しさん:04/10/04 02:12:45
>>148
それは言えない。でも実在する会社だよ。嘘じゃないよ。
150デフォルトの名無しさん:04/10/04 03:05:31
色んな所に疑問を投げかけてマルチっぽくて
恐縮なんだけど、誰も明確にレスつけてくれないんで
145にききたいんですが。

もしその会社が、開発手法もバリバリアジャイルだったら
どうやって顧客に見積りを提示して
受注したのかすんごく知りたいのです。
色んな本読んでもどこにもその事が書いてなくて
すんごい疑問で、アジャイル開発ってとてもよいと思うけど
現実感がちいともわかんのです。
151145:04/10/04 03:20:35
>>150
見積もりは、最終的なかたちは人月計算にしてる。
ただ、見積もりの再計算の機会を何回か設けている。

要件を追加するごとにお金を要求するのは、現実的ではない。
経営としてGOがでれば、成功時利益の5%とかできるけど、リスクが激高でこれも現実的ではない

特段に変わったことはしてないよ。
「要件定義が終わった段階で再見積り」という提案書を書く企業は多いでしょ。
顧客が予算を確保しやすい形にしてあげないと、本末転倒だし。

アジャイルにやっていく上で必要な管理は、要件を可視化してあげること。
プロジェクトが火を噴きそうになったときに、要件に優先度ABCをつけたりするでしょ。
あれをプロジェクトの最初からやるのが必須。
要件ごとに属性として締め切り期日やステータスを明示しておく。


UsecasePointみたいな方法は、
それこそ相当数の母集団による統計値があってはじめて成立するし。

# >>149は自分じゃない
152デフォルトの名無しさん:04/10/04 03:35:03
>要件を可視化してあげること
すげーうちのデザパタ厨管理者に見習わせてやりてー。
まともなところは流石だな・・・用件を可視化できないくせに
部下には妄想アジャイルを求めるから最悪だ
153デフォルトの名無しさん:04/10/04 05:58:32
いいかげん自作自演やめて出て逝けよ
154デフォルトの名無しさん:04/10/04 07:21:25
お前がなー
155150:04/10/04 23:18:46
>151
わー初めて現場の声がきけたうれしー。ありがとう。
ありがとうついでにもちょっと。

所謂ウォーターフォールでも途中で再見積りってのは
確かにありましたが、やっぱりお客さんは良い顔しないものです。

それがアジャイル本読むと、具体的には例えば「実践UML」なんですが
要件が全て明確にならない内にどんどんイテレーションが進んでて
一体何時の段階で顧客との合意をとるのかが全然判らない。
その「要件定義が終わった段階」ってのが全然見えない訳で、
逆にそれが売り文句だったりしてます。
最初は要件は10%もあがればいい、網羅しようと思うなとまで
書いてあります。

あ、要件定義ってのはユースケースの事を言ってます。

一体何時見積もり承認取るのか、何回再見積りするのか、不思議で不思議で。
アメリカと日本の商習慣の違いなのかなあとまで考えてました。

で、おっしゃるように、要件をしっかりと視覚化して、
優先順位をきっちりつけて(トリアージといいますね)、
となると見積りに関する疑問は全く湧きません。私もするでしょう。
ただそうなると、書籍などで説かれるアジャイル開発とはややズレも感じます。
これはけなしてるのではなくて、より実践力がある形になってるという意味です。

他にも、いやうちはユースケース定義もアジャイルでやって
見積りもその都度見直しで顧客を納得させたぜって方のお話も、
本当にあるんだったらききたいです。

いやー本当有難う御座います。
156デフォルトの名無しさん:04/10/05 02:04:38
いいかげん自作自演やめて出て逝けよ
157在日外国人参政権反対:04/10/05 02:15:19
理解できず煽ることしか出来ない人のいるスレはここですか?
158デフォルトの名無しさん:04/10/05 02:16:57
civ3スレ荒らした馬鹿はお前かね?
159150:04/10/05 02:24:47
いいレスつけてもらって感謝すると
大概ジサクジエン。
まあ風物詩ですからそれもまた一興。

でもデザパタスレからすると
スレ違いも否めんですな。すまん。
160在日外国人参政権反対:04/10/05 02:31:19
>158
自分に対してのレスですか? civ3が何のことかわかりませんが.

>159
スレ違いじゃない.もっとやってくれ。
161デフォルトの名無しさん:04/10/05 09:30:47
どっちかって言うとこっちのスレのほうが適切
ttp://pc5.2ch.net/test/read.cgi/tech/1091773629
162デフォルトの名無しさん:04/10/05 16:38:43
指定厨とクソコテがいる限りこのスレは駄目だろ
163デフォルトの名無しさん:04/10/06 03:58:44
Java厨ってほんと見苦しいね
頼むから氏んで(・∀・)
164デフォルトの名無しさん:04/10/07 13:20:23
なんか、脳内世界の発表会みたいなスレになってるね。
165デフォルトの名無しさん:04/10/08 07:52:49
>>164
そうそう。会話になってないよな。
166デフォルトの名無しさん:04/10/09 22:43:40
目を覆いたくなるような恥ずかしい自作自演だ
自分だったら首釣って氏んでるな
167デフォルトの名無しさん:04/10/10 21:33:14
>>166
だからさぁ、誰に言ってんの?
脳内世界の語り手って言われちまうぞ
168デフォルトの名無しさん:04/10/11 11:03:02
脳内世界の語り手登場
169デフォルトの名無しさん:04/10/11 14:52:04
VB.NETでもC#.NETでもいいけど、MS系でデザインパターンしてるやついる?
170デフォルトの名無しさん:04/10/11 15:52:09
MFCで 。・゚・(ノД‘)・゚・。
171デフォルトの名無しさん:04/10/12 00:35:44
>>169
やってるよ
172デフォルトの名無しさん:04/10/12 08:21:11
SDKで。
173デフォルトの名無しさん:04/10/12 16:11:36
> わー初めて現場の声がきけたうれしー。ありがとう。
ワラタ
174169:04/10/12 21:21:38
>>170
>>171
>>172
MFCとかSDKとかそういうんじゃなくてさ、 業務でよ。
175デフォルトの名無しさん:04/10/12 21:53:30
業務でSDKだよ。
MSだろうがなんだろうが
関係ないだろ。
176デフォルトの名無しさん:04/10/12 23:27:01
>>169
>>174
「デザインパターンしてる」って何よ。
177デフォルトの名無しさん:04/10/12 23:28:02
デザパタってる。
178デフォルトの名無しさん:04/10/13 00:38:49
>174
それらのレスみたらMFCベースの開発でとか、SDKベースの開発でという意味でしょう.
そもそも、言語ならともかく、MS系でというのが何を指すのかよくわからんです...
179デフォルトの名無しさん:04/10/13 07:11:54
モビルスーツか?
180デフォルトの名無しさん:04/10/13 22:48:54
>>178
つまり実務でC#使っているやつは、デザインパターンを知らないどころか、自分でクラス作れるやついないってことだな
181デフォルトの名無しさん:04/10/13 22:55:29
>>180
流石に C# でクラスを作れない奴は居ないだろう。
この場合引き合いに出されるのは 『クラスを使えるか』 もしくは 『クラスに使われるか』 だ。
182デフォルトの名無しさん:04/10/14 00:05:51
実務でC#使っているが、俺のプロジェクト誰一人としてまともなクラス作れてない
C++/Java上がりの連中なんだがな、どうしたものか。
183デフォルトの名無しさん:04/10/14 00:24:32
まともなクラスの定義はなんだよ。
C++/Java上がりの連中はCLRのクラス構成を熟知しているわけじゃないんだから
いきなり投げ込まれても正しく分析なんてできないだろ。
184デフォルトの名無しさん:04/10/14 00:35:03
>>183
逆でしょ、CLRだなんだっての知ってても
それは実装レベルの話じゃん。

普通「まともなクラスが作れない」という場合は
設計レベルの話だよね。言語は関係ない。

他のオブジェクト指向言語経験者なら
出来ると思ってたのになって事でしょ、182は。
185デフォルトの名無しさん:04/10/14 00:35:32
>>182
まず他人と会話してみるのがいいと思うよ
186デフォルトの名無しさん:04/10/14 01:07:37
>182
俺のプロジェクトが一人プロジェクトだったら面白い
187デフォルトの名無しさん:04/10/14 01:10:08
デザインパターンしてる。
デザパタってる。
デザってる。
パタってる。
ザパってる。
タってる。

>>182
どれがいい?
188デフォルトの名無しさん:04/10/14 01:36:48
デンパってる、がいい。
189デフォルトの名無しさん:04/10/14 11:30:00
IT Pro 技術の広場
羽生田栄一の「オブジェクト論」
http://itpro.nikkeibp.co.jp/members/NBY/techsquare/20040907/1/mokuji.jsp
羽生田栄一の「デザイン・パターン論」
http://itpro.nikkeibp.co.jp/members/NBY/techsquare/20041006/150890/mokuji.jsp
190デフォルトの名無しさん:04/10/14 12:51:17
お気に入りの新着をすべて開くの動作が変わった?
新着あるものすべて開くんだけど、新茶区分を取得しに行かない.

とおもったら、その他のすべてを開くうんぬんで直った 
あと更新チェック5分の待機時間長すぎ
191デフォルトの名無しさん:04/10/14 12:51:37
誤爆スマン
192デフォルトの名無しさん:04/10/14 16:15:49
>>189
宣伝乙
193デフォルトの名無しさん:04/10/16 22:43:04
安定したインタフェースを抽出できなくて困っている。
俺の頭が悪いのか? ・゚・(ノД‘)・゚・。

対象としているもののアルゴリズムは安定しているんだけどな...
インタフェースを中心に据えなくちゃオブジェクト指向と言えないですよね?
194デフォルトの名無しさん:04/10/16 23:28:18
>>193
最後の行に書いてるようなことを気にしすぎてはいけない。

これ読め、できれば本も。
ttp://www.ogis-ri.co.jp/otc/hiroba/technical/MPD/

マルチパラダイムデザインの中核となる概念は共通性と可変性だ。
お前のドメインでアルゴリズムが安定要素なのであれば、それに応じた
ソリューションがあるということ。
195デフォルトの名無しさん:04/10/17 02:03:59
>>それに応じたソリューションがあるということ。

それがわからないから苦労してるんでしょ?
閉経
196デフォルトの名無しさん:04/10/17 02:12:07
何も言ってないのと同じだよな。
断言すると叩かれる、だから曖昧にしておく。
197デフォルトの名無しさん:04/10/17 10:23:41
ソリューションドメインの分析をしなきゃいけないようだけど
>>193の環境がわからないことには始まらない。C++だというなら
当てはまるのかも試練が。
198デフォルトの名無しさん:04/10/17 11:10:01
俺も、マルチパラダイムデザインは白眉だと思う。

「共通性と可変性」だけに言及するとなんか当たり前っぽいけど、
凄い分析なのは「共通性と、正の可変性と、負の可変性」に分類したこと。
読め。おら読め。
199193:04/10/17 15:44:43
マルチパラダイムデザインですかー
本自体は聞いたことあるけど読んでみることにします。

>>197 C++です。当てはまるというので期待してます。
200デフォルトの名無しさん:04/10/17 16:33:44
現実の問題領域がシングルパラダイムでは表現できないなんて当然だよな。

インタフェースを中心に据えなくちゃ・・・
なんて風潮があるとしたらほんと有害。
201デフォルトの名無しさん:04/10/17 23:23:53
マルチパラダイムデザイン・・・

売ってない ・゚・(ノД‘)・゚・。
202デフォルトの名無しさん:04/10/18 02:01:50
そこでマルチパラダイムして別の本を買え!
203デフォルトの名無しさん:04/10/20 17:02:47
>>200
俺は据えても構わないと思うんだけど
周りを残しておけば

>>201
bk1 に残ってるみたい。今俺も注文した
204200:04/10/20 23:33:13
>>203
> 俺は据えても構わないと思うんだけど
> 周りを残しておけば

なんかコワい雰囲気・・・
迂闊に近寄ると切られるかも
205203:04/10/23 10:31:11
>>204
切らんよw
206デフォルトの名無しさん:04/10/24 19:40:50
マルチパラダイム届いた。ざっと目を通してみたけど、
設計手法をパターン化し、『一歩離れたところから見て』まとめた
モノとして考えていいの?なにやらごちゃごちゃ書いてあるけど
207デフォルトの名無しさん:04/10/25 22:38:41
読み終わったか?
208206:04/10/26 18:15:35
読み終わった
理解にはもう少し時間かかると思う
209デフォルトの名無しさん:04/10/26 22:32:24
すごいじゃないか!こんな短時間で読み終わるだなんて!!






実は半分しか読んでない俺にエッセンスを教えてくれ
210デフォルトの名無しさん:04/10/26 23:09:17
マルチパラダイムに対する
『シングル』の方はどんなパラダイムなわけ?
211デフォルトの名無しさん:04/10/26 23:21:24
独身パラダイム
212デフォルトの名無しさん:04/10/26 23:27:12
マジレスまたは真面目な付き合いを望む
213206:04/10/27 15:36:49
>>209
無理だ。内容が濃すぎて頭の端から抜けていく^-^;
214206:04/10/27 16:17:35
>>212
とりあえず、全然理解できていない身で悪いが、

『シングルパラダイム』とは、今まで使用されてきたとおりの言語パラダイム
(例えばオブジェクト指向とか)を指すようだ

『マルチパラダイム』は、それらシングルパラダイムを全部ひっくるめて
さらに+αしたものを考える手法を指っぽい

違うかも。っていうか例の本は生半可な気持ちで読むもんじゃない=■○_
215デフォルトの名無しさん:04/10/28 00:26:44
逆に自然体だよなあ

△△を中心に据えよ!

...って気張るよりも
216デフォルトの名無しさん:04/11/02 22:57:31
117ページ

オブジェクト指向パラダイムは、型と構造に共通性を仮定する。
そして、実装において可変性を表現する。ファミリの構成員を
この枠組みに溶かし込むことができるのであれば、オブジェク
トパラダイムはよくフィットしているということになる。

・・・やってみなきゃわからないってこと?
217デフォルトの名無しさん:04/11/03 00:55:04
ポリモーフィズムうまく使えるようにモデリングできるかということはないのか?
ポリモーフィズム使えるということは汎化がうまくいって、共通の枠組みに押し込めてるということだから。
218デフォルトの名無しさん:04/11/03 09:14:42
ポリモと言えばp114とp137にあるように広く見てるね

1 多重定義・・・つまりオーバーロード
2 パラメタライズド・・・クラステンプレートと関数テンプレート
3 キャストによる型変換
4 継承による普通の(せまい)意味でのポリモ

の4つをポリモと表現してる
219デフォルトの名無しさん:04/11/03 11:32:19
それは広すぎるんでは?

キャストして他の型にしてからそっちの機能を使うっての
までポリモーフィズム?
テンプレートは「コンパイルタイムポリモーフィズム」と
呼ばれることもあるので違和感少ないが。
220デフォルトの名無しさん:04/11/03 11:53:28
ポリモーフィズムといえば4のようなことを言うんだと思ってた
頭固いかな
221デフォルトの名無しさん:04/11/03 15:22:47
キャストをポリモと解釈しているのは、キャストしても
もとのオブジェクトのアイデンティティが保たれている
と想定しているからだろ。
多態、すなわち同一のものがいろいろな側面を見せる
って意味ではキャストしようが何しようが構わんという
立場。

デザパタとはどんどん離れてないか?
222デフォルトの名無しさん:04/11/03 19:24:39
RMIで扱うスタブを末端のオブジェクトに渡すのってあまりよくないですよね?
皆さんだったらどうしますか?
僕はADAPTERパターンがいいのかな?と感じました。
223デフォルトの名無しさん:04/11/03 19:30:45
Gammaです・・・

ADAPTERパターンがいいと思ったらとりあえず実装してみては?

・・・Gammaです
224デフォルトの名無しさん:04/11/03 19:45:20
>>223
Erich Gammaの事かな?
まだ皆さんの意見を聞きたいですが、早速実装してみます。
225デフォルトの名無しさん:04/11/03 20:05:57
Gammaです・・・

ADAPTERパターンがダメだといっても、たぶんこの人は反論して使うとです。

・・・Gammaです
226224:04/11/03 21:05:46
>>225
人がどのように行動するか不確かな根拠で予言するのはスレ違いだと思います。
でも一応意見を参考にさせていただくことにしました。
今後適応パターンの判断から実装まで弟に任せることにしました。
うちの弟はどうですか?
227223:04/11/03 21:30:28
>>224
偽Gammaに負けずにがんがれ!
228224:04/11/03 21:35:05
>>227
応援ありがとうございます。
でももう弟に任せたから、弟に頑張ってもらうつもりです。
弟もこのスレ利用するかもしれないので、そのときはよろしくお願いします。
229デフォルトの名無しさん:04/11/03 23:38:30
230デフォルトの名無しさん:04/11/06 12:13:21
State パターン使う場面を見出せなかったが、ゲームの状態遷移に思いっきり使えると気づいた今日この頃
気づくの遅いなぁ orz
231デフォルトの名無しさん:04/11/06 13:39:10
Stateパターンはものすごく参考になった。
switch文はほとんど出番なしなヨカーソ
232デフォルトの名無しさん:04/11/06 13:52:02
>229
何このスレ・・・
ねた?
233223:04/11/06 16:58:18
State と Strategy の違いってどんなんだっけ?
234230:04/11/06 17:02:21
>>233
どちらも委譲で挙動をごっそり替える点では同じ

State … クラスで状態を表す
Strategy … アルゴリズムを切り替える
という目的において異なる
235223:04/11/07 00:50:13
ありがとう
でも、目的が異なるって説明はいろんなところで
見た覚えがある(State vs. Strategy に限らず)けど
それだけじゃ異なるパターンとして別にする程のこと?
って思いが残る...
236デフォルトの名無しさん:04/11/07 16:02:22
>>235
デザインパターンが主とするオブジェクトパラダイムだと、
現実世界と如何に対応させるかが1つの焦点となるから、
ある意味でこれは自然な事だと思うけど……
237デフォルトの名無しさん:04/11/09 22:16:40
目的が異なるってことだけなら、クラス図は多少違うけど
CommandとStrategyも似ているよね。
違いはサブクラスの許容量の違いだと認識しているんだけど
Strategy・・・何かしらの共通目的をもつ
Command・・・何でも良い。
違う?
238デフォルトの名無しさん:04/11/10 16:34:08
とりあえず例の本を読み切った
『可変性』って言葉は、「仕様の変更に対処するための柔軟性」って読みかえてもいいものだろうか……



そんなことはどうでも良い

『Chain of Responsibility』パターンだけど、
各オブジェクトが「次のオブジェクト」を知っている必要があるのは何となく違和感があるような気もする
俺の場合、単純だが処理にかかわる全てのオブジェクトを保持するクラスを作り

foreach(Handler c in handle) {
    if (c.handleRequest()) {
        break;    // 処理できたら抜ける
    }
}

みたいな感じにすることが多いが、『CoR』パターンって使ったことある人いる?
239デフォルトの名無しさん:04/11/10 16:49:38
構文木みたいのも一種のChain of Responibilityじゃないかな。
それなら何度も使ってる。
240デフォルトの名無しさん:04/11/10 17:28:04
>>238
イメージ/オーディオ/ビデオのフィルタみたいなのもCoRじゃないのかな?
同型インターフェイスを持つオブジェクトを自由に接続して連鎖的に処理させるやつ。

> 各オブジェクトが「次のオブジェクト」を知っている必要があるのは何となく違和感があるような気もする
例えば、各オブジェクトが「次のオブジェクト」の持つ属性によって処理を変えたい場合とか。
241238:04/11/10 17:38:14
>>239-240
あ〜何となく分かった
今まで CoR を「処理を行うオブジェクトを探す」用途としてしか見てなかったみたい

確かに処理のパイプラインみたいなのも、CoR の一種として考えられるような気がする
サンクス。参考になった
242デフォルトの名無しさん:04/11/16 22:32:32
もうGoF本から外した方がいいパターンはないかね?

・・・投票の結果、4つのパターンが締め出された。
Factory Method、Bridge、Flyweight、そしてInterpreterだ。

ttp://capsctrl.que.jp/kdmsnr/wiki/bliki/?OOPSLA2004

BridgeはStateとStrategyがあるからもういいや、ってこと?
243U ◆CZtFsGiu0c :04/11/17 12:36:52
>>242
Bridgeは特定の言語以外では有効な使い道がないからじゃないですかね。
JavaやSmalltalkでBridgeの使い道ってありますか?

Flyweightは、富豪的プログラミングに反するからですよね:-)
244デフォルトの名無しさん:04/11/17 12:47:54
用途が特化されすぎると「用途が限られるからパターンじゃない」と言われ
用途が一般的過ぎると「そんなのパターンと呼ばなくても普通に使うだろ」と言われる。
適度に用途が限定されたパターンというのはそんなに多くないかもね。
http://hp.vector.co.jp/authors/VA020635/system/dpattern.html
245デフォルトの名無しさん:04/11/22 15:18:24
246在日外国人参政権反対:04/11/22 17:28:30
なんかいろんなスレで本文のない書き込みがあるんだが、誰かなんか作って変なテストしてるのか?
247デフォルトの名無しさん:04/11/22 21:15:41
>246
クソスレ見すぎ
248デフォルトの名無しさん:04/11/22 22:11:44
クソコテがクソスレをつくる
249在日外国人参政権反対:04/11/22 22:26:25
またチ(ry
250デフォルトの名無しさん:04/11/23 00:07:53
糞スレを作るのは、コテハンをみると決まって過剰反応する厨房名無しだろ。
251デフォルトの名無しさん:04/11/23 01:47:35
臆病者が伏せ字を使っていい気になってるスレはここですか?
252デフォルトの名無しさん:04/11/23 08:30:11
>>250
同意
俺の場合246は透明あぼ〜んされている
これお薦め
253デフォルトの名無しさん:04/11/24 16:40:05
>>244
ところでマジネタなんだが、パターンってつまり『クラス間の関係を表す』ものだと俺は認識してるから、
>「そんなのパターンと呼ばなくても普通に使うだろ」
ってすごく変な感じがする。

デザパタって、困ったときの道具箱じゃないのにな〜
254デフォルトの名無しさん:04/11/25 00:00:07
『アンケート』
実際に使ったことのあるデザインパターン
さぁどぞ

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
255デフォルトの名無しさん:04/11/25 00:09:35
visitor
256デフォルトの名無しさん:04/11/25 00:09:50
し、しんぐるとん… にゃんにゃん
257デフォルトの名無しさん:04/11/25 00:23:20
State
258デフォルトの名無しさん:04/11/25 00:59:54
composit, iterate, visitor, builder, facade
259デフォルトの名無しさん:04/11/25 04:33:03
Product Trader パターンについて詳しく書かれているサイト or 本ってないですか?
260デフォルトの名無しさん:04/11/25 04:45:39
Singleton,Observer,state,Strategy,facade,Composite,Command,
261デフォルトの名無しさん:04/11/25 21:46:21
Singleton, Mediator, Strategy, Composition, Visitor
262デフォルトの名無しさん:04/11/25 22:01:50
卑怯な手段としての
Mediator
263デフォルトの名無しさん:04/11/25 23:35:24
どんな場面で使ったとかコメントもあるとおもしろいかも
300取ったやつカウントよろしく
じゃ続き

↓↓↓↓↓↓↓↓↓↓↓↓↓
264デフォルトの名無しさん:04/11/26 22:49:36
Mediatorっていうか今思うとFunctorだな。
Mediatorの抽象ベースクラスがあって、派生クラスはテンプレート。
Boostのファンクタみたいな感じ。
5年以上前にしちゃイケてたかな。。。
265デフォルトの名無しさん:04/11/29 21:17:07
GoF 以外でどんなパターン使ってる?
266デフォルトの名無しさん:04/11/30 05:19:42
アンチパターン
267デフォルトの名無しさん:04/11/30 20:55:09
IoCってGoF?
268デフォルトの名無しさん:04/12/01 11:17:23
表面上ファクトリー使うから関係はあるけど
パターン自体は入ってない、よな。
269デフォルトの名無しさん:04/12/01 20:16:19
ぬるぽパターン
270デフォルトの名無しさん:04/12/01 23:12:28
DIって、spring出るまで知らなかったけど
割と最近の手法なのかな。
271デフォルトの名無しさん:04/12/01 23:34:44
>>269
ガッ パターン
272デフォルトの名無しさん:04/12/02 01:18:41
ttp://patterns-wg.fuka.info.waseda.ac.jp/study/8th.html
最近ググって見つけたんだけど、ひがやすを氏の説明がわかりやすかった
273デフォルトの名無しさん:04/12/02 10:15:38
Mediatorパターンと、Observerパターンの違いがよくわからないのですが、俺なりには、
同僚にイベントを通知されるのがMediatorパターン
非同僚にイベントを通知するのがObserverパターン
と解釈したのですが、他の方はどのような解釈をしているのでしょうか。
274デフォルトの名無しさん:04/12/02 15:07:24
>>273
解からないなら解かるようになるまで教典を読みましょう。
275デフォルトの名無しさん:04/12/02 18:53:28
>>273
Mediatorは通知先を個体識別している。
Observerはしていない。
Mediatorは、なんかのイベント発生時に、どの通知先に何をすべきか知っている。
Obserberは、しらない。イベントが発生したことを知らせるだけ。通知を受けて何をするかは、Observable が決める。
276デフォルトの名無しさん:04/12/04 20:40:14
>>273
ObserverとMediatorの比較ということなら,
Observerを適用した場合 通知相手のオブジェクトに関する情報が
各オブジェクトに分散して管理が難しくなることがある
Mediatorの場合はMediator役が通知の交通整理を一手に引き受けるので
Observerを適用した場合に比べ管理は簡単になる(が,クラス間の結合が若干強くなる)

どちらを使うかは状況次第
教典の適用可能性とか目的とかの項を読んで判断

…でいいのかな…自信ないけど
277デフォルトの名無しさん:04/12/05 11:33:29
>>270
昔から「コールバック」という名前で知られていたのでは
278デフォルトの名無しさん:04/12/05 22:24:32
>>277
コールバックとは違うようなが気がしないでもないが
勉強不足なのでよくわからない だれか解説キボンヌ

パターンってのは熟練開発者の中に眠るノウハウに名前をつけて
明文化する手段だから「〜は昔からあった」という指摘は多いね
逆にそういう知識でないとパターンになりえないんだけど
279253:04/12/05 22:31:40
>>278
『ノウハウ』というのは格好付け過ぎかと

よく見るクラス間の構造が『パターン』だと俺は認識してる
熟練とかそんなのは関係なかったり

一番最後の行には激しく同意
この行に疑問を持つ人は、一体どういう認識でデザパタを捉えているのか正直知りたい
280デフォルトの名無しさん:04/12/07 10:34:14
Strategyパターンと、Observerパターンと、Stateパターンの違いがよくわからないのですが、俺なりには、
入れ替える中身が戦略だとStrategyパターン
入れ替える中身が観察者だとObserverパターン
入れ替える中身が状態だとStateパターン
と解釈したのですが、他の方はどのような解釈をしているのでしょうか。
281デフォルトの名無しさん:04/12/07 10:59:03
もくてきぜんぜんちゃうやん。
同じどうさせアルゴリズム変わってるのがストラテジーで
状態による動作の変化を隠蔽したのがState
相手のことを知らず通知したいときがObserver
282デフォルトの名無しさん:04/12/07 13:08:23
>>279
278は,デザパタも含む,もっと広い意味でのパターンを
思い浮かべながら書いてた
デザパタスレだということをすっかり忘れてたorz すまぬ

>一番最後の行には激しく同意
(・∀・)人(・∀・)

>>280
オブジェクトを互いに交換可能にして再利用しやすくする,
という目的なら共通している気がしないでもないけど,
それはデザインパターン全体で共通する目的でもある
教典の名前に入ってるくらいだし>オブジェクト指向における再利用のための〜
283デフォルトの名無しさん:04/12/07 14:05:31
>>280
形は似ているからね。特に Strategy と State は。
形が似ていても目的が違うときには、違う名前をつけるのが、
デザイン・パターン流みたいだね。>>281はそのことを言っている。
284デフォルトの名無しさん:04/12/07 14:07:29
クラス図同じだしな
285デフォルトの名無しさん:04/12/22 15:38:58
美しいソースコードを書いても給料は上がらないし会社は評価してくれない。
かなしいけどコレが現実。デザパタは知識としてはある程度有意義だけど
プログラムで一番重要なのは「ちゃんと動く」こと。次に手を抜くこと。
君たちは真面目すぎる。もういっぺん言おう
美しいソースコードを書いても

 会 社 は 評 価 し て く れ な い
286デフォルトの名無しさん:04/12/22 16:19:51
デザパタってコーディング技術じゃなくて設計技術だろ
287デフォルトの名無しさん:04/12/22 17:24:46
そうすると「コーディング技術」とはなんだろう・・・。
キーボードを早く打てるぜ俺は、とかに
なっちゃうんだろうか・・・。
288デフォルトの名無しさん:04/12/22 17:53:26
イディオムとかそういう類じゃないかな。
ファイルアクセス時のtry〜catchはこう書け、とか、文字列のNULLチェックはこうしろ、とか。
289デフォルトの名無しさん:04/12/22 18:16:00
なるほど。言語依存な所な訳ね。
290デフォルトの名無しさん:04/12/22 18:25:14
いや、そんなに言語依存でもないか。
リソースはちゃんと解放しようぜ、とかそういう話か。

そもそもデザインって設計って意味だよな。
そりゃ設計技術だよもちろん。
291デフォルトの名無しさん:04/12/22 18:41:31
>>290
俺は『クラス関係のデザイン』やとおもとった
……っていうか設計と同じ意味か

>>285 は、もう一度デザパタを勉強しなおすこと
292デフォルトの名無しさん:04/12/22 18:56:37
>291
そうそう、日本語カタカナでデザインていうと、
クリエーチブな業界のイメージだろうから
285みたいな意見が出るのだろうか。
考えすぎか。

とかいう俺もデザパタって言葉を知るまで
設計がデザインと訳されるとは知らなかったんだけどね。
おほほ。
293デフォルトの名無しさん:04/12/22 22:32:37
285は、「なるべく簡単にちゃんと動く」こととデザパタを相反する概念と考えているみたいだけど、なんでだろ
。デザパタは、「なるべく簡単にちゃんと動く」ための工夫に他ならないのに。惜しいね。
294デフォルトの名無しさん:04/12/23 18:19:19
>>285
自分が楽をするために学んでるだけだからね。
会社の評価なんてどうでもいいよ。
会社の評価のためにやってるんだったら無駄だから勉強しないほうがいいよ。

>>286
あれが設計技術か!?
思いっきりコーディング技術だと思うけど。
295デフォルトの名無しさん:04/12/23 18:51:35
>>294
御前はクラス間設計をコーティング時にやってるのか?

正直、なんで御前がそんな見切り発進で生きてられるのか不思議でたまらん
(ちなみに、罵っているわけじゃなくて純粋な疑問)


悪いことは言わない。その考えはすぐに改めた方が身の為だと思う
クラス間設計はコーティング時じゃなくて設計時にやっとけ
296デフォルトの名無しさん:04/12/23 19:47:18
デザインパターンだけど実装方法も定義してあるから
コーディング技術も含む設計技術なんじゃないですか?
297295:04/12/23 19:55:27
>>296
どの本だよ実装方法なんて定義してあるのは
298デフォルトの名無しさん:04/12/23 21:03:41
>>296
実装は例示されているだけです(教典だとSample Code)
一応Implementationに実装方法についての議論はあるけど,
あくまで付加情報だと思う
299デフォルトの名無しさん:04/12/23 21:12:19
コーディングは技術ではなく技能だ
とか言ってみる
300296:04/12/23 21:14:09
そうっすね定義っていう言い方は間違いでした。
ただ自分はプログラマーなので実装のために読んだ。
SEだと見方もかわるのではと思う。


ttp://www.amazon.co.jp/exec/obidos/ASIN/4797311126/qid=1103803514/ref=sr_8_xs_ap_i1_xgl/249-8017190-9045969
ttp://www.amazon.co.jp/exec/obidos/ASIN/0201633612/249-8017190-9045969
301295:04/12/23 21:18:45
>>300
とりあえず、一冊の本から何を学ぶかはその人の能力次第だから文句のつけようが無いが、
俺はデザパタは設計技術だと思った。


色々と偉そうな事言ってごめん。
俺、SE でも PG でも無いただの学生、しかも本は結城本 orz
302デフォルトの名無しさん:04/12/23 21:25:00
>>285みたいな化石人間ってさ、自分がマトモな実装技術を理解できずに
スパゲッティコードを量産して「仕事ってのは芸術じゃなくて作業なんだよ!」
とか言って、部下に自分のダメコードのデバッグを押し付けるダメSEの
典型的な発想だよね。
303デフォルトの名無しさん:04/12/23 21:27:59
ちなみに言うと、デザインパターンってのは、別に
「美しいソースコードを書いて自己陶酔や品評会をするための技術」じゃなくて
「実装やデバッグや仕様変更で可能な限り楽をするための技術」だから、
有能なプログラマであれば、GoF本を初めて読みながら
「これって俺が前に自分で考えた仕組みと同じじゃんw」って思えるもんだよ。
304デフォルトの名無しさん:04/12/23 21:31:59
>>303
同感

俺は決して有能なわけじゃないが、知らず知らずの内にパターンに嵌る事って意外と多いよな
……Visitor が自然と組めたのにはビビッたよ
305デフォルトの名無しさん:04/12/23 21:36:52
>303
>ちなみに言うと、デザインパターンってのは、別に
>「美しいソースコードを書いて自己陶酔や品評会をするための技術」じゃなくて
>「実装やデバッグや仕様変更で可能な限り楽をするための技術」だから、

ちなみに言うと、デザインパターンってのは、別に
「実装やデバッグや仕様変更で可能な限り楽をするための技術」じゃなくて
「既存の技術に覚え易い名前を付けてカタログ化した」だけのもの。
306デフォルトの名無しさん:04/12/23 21:42:30
>>305
別に「GoFが全く新規に提案した」なんて前置きをつけてないし。

有能プログラマがGoF本を読む
→身に覚えがあるのですんなり理解

無能プログラマがGoF本を読む
→全く想像すらした事の無い発想ばかりで全く理解不能
→そして強烈なアンチGoFになり、GoF本を読む部下に嫌味を言いまくりw
→設計会議で「パターン」なんて言葉が出ようものなら「俺たちは芸術家じゃねーんだよ!」

その典型が>>285
307デフォルトの名無しさん:04/12/23 21:44:41
だからさ・・・でざぱたはそれまでのプログラム経験の中で有効だと思えたものを選んで分類整理したものだろ?
それ考えればおのぞから答え出てくるかと・・・
308デフォルトの名無しさん:04/12/23 21:52:00
しかし Bridge と FactoryMethod は有効だと思えない
俺の理解が浅いだけで、本当はいたるところで使われているのかもしれないが
309デフォルトの名無しさん:04/12/23 22:04:48
>>308
その2つの用途が分からんってのは、
お前がマトモにプログラムを書いた経験がないってのが丸分かりだな。

恥ずかしすぎるww
310308:04/12/23 22:35:07
>>309
すまぬ。俺の理解が浅かっただけらしい。

本だけで感じがつかめなかったから先ほどぐぐった。
どうやら、サブクラス関連で引っかかってたみたい。
過大解釈すれば、両方とも死ぬほど使ってる罠 orz

恥ずかしいので引っ込んでます |λ...
311デフォルトの名無しさん:04/12/23 22:38:23
>>308
がんがれ
312デフォルトの名無しさん:04/12/23 22:43:51
実装と振る舞いが分離されてりゃ全部 Bridge に分類されるのか? 素朴な疑問。
313デフォルトの名無しさん:04/12/23 22:56:55
だから、べつにパターンに分類することないんだツーの。
そのパターンらしきもの使うことで分離の利点を得られるならそれでいいんじゃ。
314294:04/12/25 17:57:43
>>295
ごめん。考え方の路線が違う意味でいった。

例えばシステムの要件を満たすのにどの言語が適してるのかとか、
過去のデータを集計したり、ソートしたりしたいとか言う奴がいたら、
んじゃ、CSVでデータ吐くからExcelかなんかでソートでも集計でもなんでもしてくれとか、
そういう視点の意味で言ってみた。

デザパタはたしかに設計ではあるけど「コーディングの設計」 だと思う。
コーディングをしない限り適用する場面はないわけだし。
そういう意味で、やっぱ「コーディング技術」なのではなかろか。
315295:04/12/25 18:05:04
>>314
む〜考え方が違うのか

俺はコーティングするしないに関わらずデザパタ適用するけどな
コーティングするのはそっから後
316294:04/12/25 18:05:26
>>312
ストラテジーとかいうのも実装と振る舞いが分離されているパターンだと思った。

というか、分類なぞどうでもいいと思われ。
StrategyもBridgeも「実装が容易に入れ替えられる」という
利点が得られればよい訳なのだから。

>>313
おお。激しく同意。
317295:04/12/25 18:07:59
>>316 上段
たぶん Strategy と Bridge は違うっしょ

オブジェクト指向の基本概念の1つに
・継承、委譲などでの差分プログラミング
ってのがあるけど、殆どのデザパタはそれを使うから……
318295:04/12/25 18:09:28
317 の理由から、Strategy と Bridge に似ている部分があるのは当たり前
けど、この2つはぜんぜん違うと思う
319295:04/12/25 18:11:07
>>317
基本概念を
・実装と振る舞いの分離
に訂正

……微妙に例が適切じゃなかった
320294:04/12/25 18:14:12
>>315
クラス間設計をコーディング前にしっかりやるというは激しく同意。
いきなりコーディングからはじめるとわけのわからんものが出来あがって後で後悔するし。

すまぬ。漏れ設計っていわれちゃうと基本設計書とかそんなのが浮かんでしまうので。
321295:04/12/25 18:17:39
>>320
>漏れ設計っていわれちゃうと基本設計書とかそんなのが浮かんでしまうので。 
ああ、確かにそれならコーティングの設計というのはよく分かるわ
322デフォルトの名無しさん:04/12/25 21:26:08
StrategyとBridgeなんてまったく違うだろ。

Strategyは
・実装種類にかかわらず呼び出し形式(=INパラメータおよび戻り値)は共通
・実装種類によって処理内容のみが異なる
・Strategyとしてまとめることで、実装種類を入れ替えられるようになる

Bridgeは
・実装種類にかかわらず処理内容は一緒
・実装種類によって呼び出し形式が異なる
・呼び出し形式を共通にしたBridgeを、実装種類ごとに用意する
・Bridgeを経由することで、実装種類を入れ替えられるようになる
323デフォルトの名無しさん:04/12/26 00:11:51
俺が大雑把なのかも知らんが両方ともたたいの一種としてしか認識してません・・・
324デフォルトの名無しさん:04/12/26 13:43:03
>>323
一言で多態でくくらずに、分類して名前をつけることに意味があるんだと思われ。

>>322
そうまとめられるとBridgeはadaptorに似てるな。
共通のIFを定義して、実装種類ごとに共通のIFに合うようにadaptorを用意すると。

ところでStrategyとTemplateって実現方法として委譲を使うか、継承をつかうか
しか違いが無いように思うんだけど、それ以外に違いってある?
325デフォルトの名無しさん:04/12/27 01:46:23
>>324
デザインパターンは、適用後の姿をすべて見てしまうと「おんなじじゃん」となってしまう。
適用前の時点で何が分かっているのかに注目してみたらいいよ。

Strategy
なにかサービスを受け取るクライアントを作っている。
 ServiceResult result = serviceExecutor.execute(serviceStrategy);
サービスの実処理はいろいろある(もしくは、今は分からない)
→Strategyにして判断を後回しにしよう。

Template
何かサービスを実行するサーバーをいろいろと作っている。
前処理とか後始末とかあったりして、こいつら似てるな。
→Templateにしてまとめてしまおう。
326デフォルトの名無しさん:04/12/27 02:09:52
パターンというからにはテンプレートとしていつでも使えるようにすべき。
素人にもパターンを使えるようにするには、
いちいちそのパターンを意識してコードを書く、という概念モデルの段階では無理。
素人はパターン実装に振り回されて終わる可能性がある。
リストボックスから選択するなりして目的に合致するパターンを、
テンプレートとして即座に使える様な配慮が必要。
よって今後はテンプレート化できないような概念モデルは淘汰されていくだろう。
327デフォルトの名無しさん:04/12/27 05:34:20
>>326
お前は一生VBでトイプログラムでも作ってろw
もちろん、いっちょまえにシェアレジを利用してww
328デフォルトの名無しさん:04/12/27 08:06:23
UMLツールでパターン名のステレオタイプを書けたりする訳だが
329デフォルトの名無しさん:04/12/27 18:47:06
>>326
マジレスすると,
パターンは(素人でも使えることを目的にした)テンプレートではない.
知識を共有するための枠組み.(ソフトウェア設計への適用がデザパタ)
素人が素人から脱却する助けにはなりうるが,
素人がパターンを使っても良質なソフトウェアを作ることが出来るわけではない.

すまん,俺学生でトイプログラムレベルのものしか書いたことない・・・
330デフォルトの名無しさん:04/12/27 18:59:42
>>329
なら偉そうな事を言うな。カス。
331デフォルトの名無しさん:04/12/27 21:47:04
>>330
あんたよりはマトモに理解しているぞ、329は。
332デフォルトの名無しさん:04/12/28 00:14:28
>>331
そうでもないよ。
333デフォルトの名無しさん:04/12/28 02:19:01
ではがんばって プログラム オブ 女医トイ つくってください
334デフォルトの名無しさん:04/12/28 21:44:13
>>333
寒すぎて忘年会の酔いもすっかり冷めた
335デフォルトの名無しさん:04/12/28 22:26:13
カスとか、トイプログラムでも作ってろw とか
おまいらは小学生か。
反論するならもっとまともな発言しる。
336デフォルトの名無しさん:04/12/29 04:15:30
カスはカスでいいじゃん。
337デフォルトの名無しさん:05/01/03 18:32:57
338デフォルトの名無しさん:05/01/09 18:57:07
>>337
おもしろい!
339デフォルトの名無しさん:05/01/30 16:32:19
保守age
340デフォルトの名無しさん:05/01/30 20:22:06
Visitorパターンで、木構造(DOMツリーに毛がはえたようなもの)をたどる処理を書いています。
ここで、木構造を「たどる」という処理を、Visitor側で行うべきか、Acceptorとなる木のほうで行うべきか悩んでます。
今はVisitor側で行っているんだけど、Acceptor側の構造が変わったときにいちいち整合性をとるのが面倒になってきました。
みなさん、どっちに書いてます?
341デフォルトの名無しさん:05/01/30 20:28:42
>>340
たどる処理って iterator がやるんじゃないのか?
342デフォルトの名無しさん:05/01/30 20:36:08
>>340
各家を辿るのは訪問者の役目だから Visitor
Acceptor 側で違いが吸収できないくらい構造が変わったら、さっさと Visitor パターンを使うのを止めれ
343デフォルトの名無しさん:05/01/30 20:44:32
どう考えてもvisitor
344デフォルトの名無しさん:05/01/30 20:51:04
辿る側が Visitor で辿られる側が Acceptor
辿るクラスが入れ替わったら、Visitor も↑を満たすように入れ替わる

というか、>>340 は考え方が逆のような気がする
どちらかを Visitor と決めて辿るクラスをそれに合わせるわけじゃないよ
345340:05/01/31 08:16:02
>>341-344
「たどる側がVisitor」って、いわれてみればそのとおり。だからVisitorという名前なんだよな。
どうもありがとう。めんどうでもがんばる。
346デフォルトの名無しさん:05/01/31 17:14:24
つーかデザインパターンはさー
正しいOOPをするためのイディオム群という側面も確かにあるが、
それよりも重要なのは、開発者の間でFactoryとかStrategyっていう概念を
共有できることにあるんだろんー?
UMLと同じ勘違いをされてる気がするな。UMLも、あれは設計を記述することそのものより、
クラス設計を開発者間で共有することが重要なんだろー。

・デザインパターンを知らないA君とB君の場合
A「おいB、ここどうやって実装する?」
B「んー、のクラスのインスタンスは二つ以上あるとまずいから、コンストラクタをprivateにして外部からnew出来ないようにしよう。
んで唯一のインスタンスをstaticメソッドでgetするようにする。
こっちのクラスは、状況によって選択するアルゴリズムが変わると思うから、アルゴリズムごとに処理専用クラスを作って、それを所持するようにする。
処理はそのクラスに丸ごと委譲する。」
A「・・・?」

・デザインパターンを知ってるA君とB君の場合
A「おいB、ここどうやって実装する?」
B「んー、このクラスのインスタンスは二つ以上あるとまずいからSingletonを適用しよう。
こっちのクラスは、状況によって選択するアルゴリズムが変わると思うから、Strategyを使って柔軟に処理を選択できるようにしよう。」
A「OK」
347デフォルトの名無しさん:05/01/31 20:15:04
確かに、枠組みであるという点でパターンとUMLは似ているかもしれない。

>>346
だいたい同意。
パターン名がコミュニケーションの語彙となるということだな。
GoFの一人であるブリシデスが言ってるな。(「パターンハッチング」)

あと細かいけど、デザインパターン≠イディオム
348デフォルトの名無しさん:05/01/31 22:44:57
ああ、確かにイディオムってのは違うな。
イディオムと言えるほど具体的なコードで表せるのはSingletonくらいか?スマソ
349デフォルトの名無しさん:05/02/03 01:17:35
お客さんが満足するのでデザパタを使っています
350デフォルトの名無しさん:05/02/03 02:17:39
>>340
遅レスだがツリー構造を知る第3者がVisitorをAccepterに突っ込ませたほうがいいんじゃないのか?
自分ならそうするが。
なんでVisitorがAccepterのコンテナのデータ構造を知らなきゃいかんの?
351デフォルトの名無しさん:05/02/03 16:39:55
>>350
ツリー構造を知る第3者 = >>341のいうiterator
かな?

>なんでVisitorがAccepterのコンテナのデータ構造を知らなきゃいかんの?
禿同。

>>348
イディオムは言語依存っていうイメージがあるなぁ。
352デフォルトの名無しさん:05/02/03 17:15:45
>>351
>ツリー構造を知る第3者 = >>341のいうiterator
>かな?
”んーVisitorをAcceptorに突っ込ませる人”です。
南下のクラスかもしれないし、コマンド処理するところにじか書きかもしれないし。
Visitorが自分でAcceptorに入り込んでいくよりは誰かがVisitorを突っ込ませるイメージだったので
353デフォルトの名無しさん:05/02/07 00:13:12
>>346
・デザインパターンを知らないA君とB君の場合
A「おいB、ここどうやって実装する?」
B「んー、のクラスのインスタンスは二つ以上あるとまずいから、コンストラクタをprivateにして外部からnew出来ないようにしよう。
んで唯一のインスタンスをstaticメソッドでgetするようにする。
こっちのクラスは、状況によって選択するアルゴリズムが変わると思うから、アルゴリズムごとに処理専用クラスを作って、それを所持するようにする。
処理はそのクラスに丸ごと委譲する。」
A「OK」


だと思うぞ。言いたいことは分かるが。
354デフォルトの名無しさん:05/02/07 00:44:59
・デザインパターンを知ってるA君とB君の場合
A「おいB、ここどうやって実装する?」
B「あ?これSingleton、こっちStrategy。」
A「え〜っと、これをSingletonに、こっちをStrategyにするのは何故?」
B「(゚Д゚)ハァ? 駄目だオマエ( ´,_ゝ`)プッ」

デザインパターンはコミュニケーションを阻害します!w
355デフォルトの名無しさん:05/02/07 00:57:55
デザインパターンとアンチパターンの融合か
美しいな
356デフォルトの名無しさん:05/02/07 07:32:19
>>354
コミュニケーションを阻害しているのはBの態度だろうw
357デフォルトの名無しさん:05/02/07 07:39:57
(1) Aは本当に分かっていない
(2) AはBの判断(2行目)が適切ではないと考え説明を求めた
Bが(2)の可能性を無視してるのが元凶ですな

って真面目にレスした私は釣られたのか?まぁいいや
358デフォルトの名無しさん:05/02/07 07:43:17
空気嫁てないだけ
359デフォルトの名無しさん:05/02/07 12:03:51
・デザインパターンを知らないA君とB君の場合
A「おいB、ここどうやって実装する?」
B「んー、のクラスのインスタンスは二つ以上あるとまずいから、コンストラクタをprivateにして外部からnew出来ないようにしよう。
んで唯一のインスタンスをstaticメソッドでgetするようにする。
こっちのクラスは、状況によって選択するアルゴリズムが変わると思うから、アルゴリズムごとに処理専用クラスを作って、それを所持するようにする。
処理はそのクラスに丸ごと委譲する。」
A「え〜っと、のクラスのインスタンスは二つ以上あるとまずいから、コンストラクタをprivateにして外部からnew出来ないようにして、
んで唯一のインスタンスをstaticメソッドでgetするようにする。
こっちのクラスは、状況によって選択するアルゴリズムが変わると思うから、アルゴリズムごとに処理専用クラスを作って、それを所持するようにする。
処理はそのクラスに丸ごと委譲するのはなぜ」
B「(゚Д゚)ハァ? 駄目だオマエ( ´,_ゝ`)プッ」

問題はBの態度と判明
360デフォルトの名無しさん:05/02/07 12:13:15
こぶがひっこんじまったい
361デフォルトの名無しさん:05/02/08 01:13:50
>>359
ワロタ
362デフォルトの名無しさん:05/02/09 23:23:39
ファウラー氏のアナリシスパターンが意味分からん。
363デフォルトの名無しさん:05/02/10 16:07:22
>>362
分析屋さん(?)が読むような本だからね…。
「責任関係」とか「観測」あたりは比較的分かりやすいと思われ
ガンガレ
364デフォルトの名無しさん:05/02/11 21:59:29
>>362
だいじょうぶ、わからんのはおまえだけじゃない。みんなわかったふりしてるだけだ。
365デフォルトの名無しさん:05/02/12 17:26:16
俺もわかんね
366デフォルトの名無しさん:05/02/12 20:57:17
何でそういう風に分析する糧のを考えるのにはいいね。
覚えるもんじゃない。考え方を学ぶもの。
367デフォルトの名無しさん:05/02/14 04:40:13
C#によるデザインパターン
http://www.dofactory.com/Patterns/Patterns.aspx
368デフォルトの名無しさん:05/02/19 22:24:31
MedieterとObserverの違いを普通に教えてください。
集中管理という目的では同じに見えるんですが。
369デフォルトの名無しさん:05/02/19 22:34:33
>>368
前者は伝達経路に対するパターン。
後者は伝達方法に対するパターン。
両者はそもそも目的が違う。
370デフォルトの名無しさん:05/02/20 00:26:49
>>369
やはり目的の違いですか。
statとstrategyの違いみたいな感じ?
371デフォルトの名無しさん:05/02/20 19:32:41
>>368
このスレくらい嫁
>>273-276
372デフォルトの名無しさん:05/02/20 19:37:19
http://www.ogis-ri.co.jp/otc/hiroba/technical/JPLoP/DPforRDB.html
数少ない日本発デザインパターンのひとつ
373デフォルトの名無しさん:05/02/21 14:21:06
デザインパターンF.A.Q.
http://www.hyuki.com/dp/dpfaq.html

天麩羅追加きぼん(次スレがあれば)
374デフォルトの名無しさん:05/02/23 02:29:04
最近DQ8をやっていて思ったこと。
1.
「さまようよろい」は、戦闘中に「ホイミスライム」を呼びます。
「じごくのよろい」は、戦闘中に「ベホマスライム」を呼びます。

・・・あ、これってある意味"Abstract Factory"じゃね?

2.
新しい街にやってきた主人公達御一行。
まずは民家・店・井戸の中など、入れる建物に片っ端から訪れて、
中にあるツボやタルやタンスなどを物色します。

・・・あ、Visitorパターンじゃん!

デザインパターンを知ってると、こういう些細なことに対して
思わずにやっとなってしまいます。
375デフォルトの名無しさん:05/02/23 17:45:56
>>374
真性ヲタ
376デフォルトの名無しさん:05/02/23 19:50:20
可愛いあの子をObserve
377デフォルトの名無しさん:05/02/23 20:55:47
キモい>>376を Two-Phase Termination
378デフォルトの名無しさん:05/02/23 21:39:54
>>376 はストーカーパターン
379デフォルトの名無しさん:05/02/23 23:00:01
>>378
アンチパターンだよね
380デフォルトの名無しさん:05/02/23 23:48:06
>>377
だけど私はImmutable
381デフォルトの名無しさん:05/02/24 15:32:14
そいつぁItrator。
382デフォルトの名無しさん:05/02/25 02:15:53
>>381
×Itrator
○Iterator
383デフォルトの名無しさん:05/03/02 23:33:07
短時間でデザインパターンの全貌をなんとなくつかむには何がオススメですか?
「まずはこの Web(本) を読め!」というものを1つだけ選んで教えてください。
384デフォルトの名無しさん:05/03/02 23:51:47
全貌があるのか否かイマイチ疑問だが、結城のデザパタ入門に一通り
目を通した後でJakarta CommonsのコンポーネントをEclipseUMLへぶ
ち込んでクラス図を出力して眺めて読んで追って舐め回せ。

Jakarta Commonsのソースは超実践的にして超膨大なデザパタのサ
ンプル集だ。
385デフォルトの名無しさん:05/03/03 00:17:49
>>383
GoF
386デフォルトの名無しさん:05/03/03 00:31:45
>>383
「Eclipseプラグイン開発」 Erich Gamma, Kent Beck
Erich GammaがデザインパターンをEclipseアーキテクチャでどう利用
したか解説してくれる。実際にパターンが現場でどう使われているか
実感できる。ただ全貌がわかるわけではないけど。GoF読んで「ふ〜ん、で、
それで?」とか思ったときに読むといいかも。

ちなみにKent Beckもなんか書いてるけど、
これは蛇足だからどうでもいい。
387デフォルトの名無しさん:05/03/03 14:56:17
デザパタって何で賞賛されるんだ?

Templete MethodやFactory Methodのような
抽象クラスの作り方をアマのプログラマでも
やってきたんじゃないか?
煽りみたいな表現になってしまい、スマヌ
388デフォルトの名無しさん:05/03/03 15:22:50
手法に「名前を付けた」ことがデザパタの最大の功績。
手法自体はやってる人は昔からやっていること。
389デフォルトの名無しさん:05/03/03 16:21:58
>>387
……馬鹿じゃないの?マジで。
一体どうしたらそんな発想が出てくるんだ?
デザパタをなんだと思ってるんだ。「今まで誰も思いつかなかったオリジナリティあふれる設計」か?
390デフォルトの名無しさん:05/03/03 21:16:59
うぇあーお、やべーよ
おれはデザパタを読む前からテムプレートとかやてたーよ
おれってすげーよ
391デフォルトの名無しさん:05/03/03 21:29:15
>387
セクハラって何で非難されるんだ?

女の尻触ったりシモネタ言ったり
女性に対するいたずらを一般人でも
やってきたんじゃないか?
煽りみたいな表現になってしまい、スマヌ


392デフォルトの名無しさん:05/03/03 23:15:23
>>390
貴方がやってきたテムプレートと、私がやってきたテンプレートは大なり小なりの違
いこそあれきっとどこかが違う。
だから、貴方が「ここはテムプレートな」と言い、私が「そうだな」と肯いても、出来上
がってみると思惑がズレてたりする。
そもそも、貴方がテムプレートと呼ぶやり方を、私は別の名で呼んでるかもしれない。
そうすると、前段の会話自体が成立しない事になる。

デザパタが何かを生み出したとしたら、それはcommonaltyなんじゃないかと俺は思う。
393デフォルトの名無しさん:05/03/03 23:30:48
>>392
言う相手を間違えてない?
390は明らかに387に対する煽りか、きちがいだろ
394デフォルトの名無しさん:05/03/04 00:17:00
>>393
そうか、そうかもな。

それじゃあ、public class 392 implements 390、て事にしとくw
395デフォルトの名無しさん:05/03/04 12:40:44
暗黙知を形式知に変えることの重要性が分からない者には
何を言っても無駄。
396デフォルトの名無しさん:05/03/04 14:30:51
>>390
>>373の17を嫁
397デフォルトの名無しさん:05/03/04 14:56:13
>>388
そうですよね。
異様なまでに賛美されてるから
不思議に思ってしまって。

>>389
ひがみ根性ですね
もう少し国語の勉強しようね、僕

>>390
ばかでつね

>>391
ここはとってもつまらない
インターネッツですね
398デフォルトの名無しさん:05/03/04 15:10:09
ANSIのC/C++のように規格化すればいいってか、くだらん。
案件にとりかかる前に仕様を統一しとけばイイだけだ。
399デフォルトの名無しさん:05/03/04 15:14:47
言語の規格さえしっかりしていれば、それで十分。
400デフォルトの名無しさん:05/03/04 15:31:48
シンタックス、イデォム、パターン
401デフォルトの名無しさん:05/03/15 12:04:44
日経ソフトウエアでデザインパターンの連載が始まっていると聞いたのですが、
今までどんなパターンが解説されてきたのかを教えてください。
402デフォルトの名無しさん:05/03/17 01:07:07
質問です。
interpreterパターンを使ってパーサを作っているのですが、
以下のような文法を扱う場合に、どのように構文解析すれば良いか分かりません。
構文<A>を読み込んだ時点では、その構文が<X>と<Y>のどちらに属するのか
分からないからです。
私が勉強した本(結城さんのデザインパターン入門)では、
「インタープリタパターンは、(E)BNF記法に忠実に従うべし」と書いてありましたが、
この場合、BNF記法に従って文法解析を行うことは可能なのでしょうか?

文法を <Root> ::= <A> <B> (<C> | <D>) と置き換えれば一応解析できるのですが、
この場合はBNF記法に忠実には従っていない気がします。

<Root> ::= <X> | <Y>
<X> ::= <A> <B> <C>
<Y> ::= <A> <B> <D>
403デフォルトの名無しさん:05/03/17 01:55:47
RootNodeParse()で
SkipTokenを2回つかって、<A> <B> とすすんで、currentTokenで<C>または<D>をとってきて
XNodeParse()かYNodeParse()にとぶか(それともUnsupportでエラーにするか)をきめればいいのでは?
404デフォルトの名無しさん:05/03/17 02:07:48
BNF は、文法の定義方法で、構文解析方法じゃないので、
「忠実に従う」といっても、プログラムの駆動が、
定義文をそのままトレースするという意味ではないんでは。
405デフォルトの名無しさん:05/03/17 03:36:16
このへんはデザパタじゃなくて言語処理の話だな。
406デフォルトの名無しさん:05/03/17 07:04:09
>>402
RootのBNF定義を変形するべしに1票。「BNFに忠実に」という意味は、BNFを変形してはいけないというわけではないと思う。
407デフォルトの名無しさん:05/03/17 08:40:58
インタプリタパターンで普通にコードを書くと
最初 ノードXのつもりで解析を始める
A B と順に解析を始める
C の解析に失敗する
Xの解析に失敗したと分かる
Rootの|が発動する
Yの解析が始まる
A B Dと解析が進む

ってなりそうだが なんないの?
408デフォルトの名無しさん:05/03/17 10:24:23
BNFに忠実にってのは、「書いた文法定義をそれに対応するコードに
置き換えましょう」という意味であって、
「文法定義に拡張BNFを使ってはいけない」という意味ではないと思う。
409デフォルトの名無しさん:05/03/17 12:40:10
>>402
俺、インタプリタパターン書いたとき
そういうBNFもちゃんと処理できたよ。
何で困ったのか教えてクリ
410デフォルトの名無しさん:05/03/19 01:59:38
StrategyとかCommandとかそこらへんの「振る舞いをまるごと変更や持ち運び」
っていうパターンって、クロージャひとつあれば解決するよな
411デフォルトの名無しさん:05/03/19 02:46:11
>>410
まぁ、クロージャは道具で、デザインパターンは工法だから、
問題なかろう。
412デフォルトの名無しさん:05/03/19 04:00:19
ちょっとGoogってみたけど、「クロージャ」ってどうもよく意味がわからん。
「オブジェクト指向でない言語で、
 オブジェクトのように扱えるように作ったコードの集まり」
のような意味しか読み取れないが、それだと、
>>410 の言ってることとちょっとかみ合わない感じだし。
413デフォルトの名無しさん:05/03/20 20:16:58
>>412
クロージャという言葉には色々な意味・用途がある。
構文解析が話題となっている時に出てくるクロージャといえば、
多分、"(その時点で考えうる)遷移状態全てからなる閉包"
を指しているんだろうな。
414デフォルトの名無しさん:05/03/20 22:52:26
閉包とかいわれてもわけわからん。

ヘイホー、ヘイホー。
415402:2005/03/21(月) 20:59:06
レス遅くなってすみません。
みなさんレスありがとうございます。
個人的に、>>407のロジックに興味を覚えました。シンプルですね。
論理式の評価の手順にそっくりです。

そんな>>407に質問なのですが、
「Xの解析に失敗したと分かる」ためには、どうすれば良いのでしょうか。
個人的に以下の案を考えたのですが、

  1:Xの解析に失敗したことによって生じる例外をキャッチする
  2:Expression#interpret() の返り値を論理値にして、
   解析に成功したら「真」、それ以外は「偽」を返すようにする

1は、別にこの処理はエラー処理ではないので、
例外の利用を前提とするのが大げさだと思います。
2は、既存のソースの大幅な改ざんが必要となる場合があります。

他に何か良い方法はありますでしょうか?
416デフォルトの名無しさん:2005/03/21(月) 22:26:34
>>407じゃないけどScheme的解決法として、
そのままRootのYの直前の継続を呼び出すというのが簡単なんだけど、
Cとかの手続き型言語に言い換えればただのバックトラッキングということかな。
>>407の意見を聞いてみたいね。
417407:2005/03/23(水) 00:24:45
色々説明しようかと思ったけど、面倒くさいので
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/274.zip
こんなコードを書いてみた。勝手に使い回してかまわない。
つか、俺もデザインパターンは結城浩の本で勉強したよ。

SerialNode : BNFの、連続したノード
OrNode : BNFの、or( | )
EndNode : BNFの、末端のノード

これに繰り返しを表現するRepeatNodeや省略可能Nodeを追加すると
BNFのトレースが簡単になる。


解析されたBNF構文木全体にアクセスしたい時はVisitorかなんか、そういうので。
418407:2005/03/23(水) 00:32:27
>>415
例外にすべきかエラーリターンにすべきかは俺には解らないが、
俺は、失敗したら、その旨を示す値を返すように設計したよ。
多分それが一番お手軽だと思う。
でも、例外にしても本質的に花にも変わらないと思う。

>>416
こういうの、バックトラックって言うのかな。
なんかよくわかんね。

まあ、俺はこのサンプルコードが俺の期待通りに動いたので、なんかちょっと嬉しい。

このサンプルコードは、
10進数か16進数とマッチするのを表現する、以下のBNFをコードに置き換えたもの。
num = d | h
d = ( "0" / "1" / ... / "9" ) "#"
h = ( "0" / "1" / ... / "9" / "a" / "b" / ... / "f" ) "%"

419デフォルトの名無しさん:2005/03/23(水) 07:50:25
デザインパターンの前にオートマトンについて学習すべきでは?
420407:2005/03/23(水) 08:34:20
オートマトンについて学んでいれば、417のコードは違ったものになっているってこと?
そうじゃなくて、字句解析にはオートマトンを使うべきだってこと?

421デフォルトの名無しさん:2005/03/23(水) 14:29:59
1234#1234%

dに属するの?
dにもhにも属さないと判断するのが正しいのか
422デフォルトの名無しさん:2005/03/24(木) 13:43:57
そもそもインタープリタパターンって構文解析が目的じゃないでしょ。
解析済みの結果に対してどう処理するかってもんじゃないの?
423デフォルトの名無しさん:2005/04/10(日) 04:44:23
>>420
A オートマトンって言ってみたかっただけ

あれ読んで、ためになったとかって奴、プログラマには向いてないよ。
424デフォルトの名無しさん:2005/04/10(日) 19:00:51
オートマトン……ってか状態遷移は重要だと思うけど
425デフォルトの名無しさん:2005/04/13(水) 12:38:22
>>423
低脳PGさんには、必要ない知識だな。

・Lex&Yaccの字句解析&文法解析
・制御系の開発
・ハードウェアの論理回路設計

なんかには必須だけどw

つか、釣り餌も、それに釣られてるのも、程度低いなぁ
426デフォルトの名無しさん:2005/04/13(水) 12:54:51
ところで、「GoFのデザパタ本は入門書ではない。もっと詳しく知りたい人の本だ」
ってMartinFawlerさんが言ってるのを見つけたんだけど、皆さんはどう思いますか?

俺的には、経験積まないと共有知のありがたみなんて理解しようもないから、
GoF本だろうと結城本だろうと、ある程度進んでからやるべきだと考えてるけど。
(個人的学習経験としてそう思うし、また初心者に結城本教えるという無謀な試み(!)の経験で改めて実感したw

リファレンスはこのあたり
Swebok http://www.martinfowler.com/bliki/Swebok.html

>今月は IEEE による SWEBOK(ソフトウェアエンジニアリング知識体系) のレビュー月間である。
>これは、我々の専門分野についての知識体系を定義しようという試みで、ライセンス化へ向けて
>の土台となるものだ。
(中略)
>さて、Swebok のどこがダメなのか?
(中略)
>本の選出はひどくはなかった(GangOfFourを推薦図書にはリストアップしないよう私が警告したのだが)。
>(GangOfFourはさらに理解を深めたい人用である。初心者用の「参考図書」ではない)

427デフォルトの名無しさん:2005/04/13(水) 13:04:32
持っているの結城本だけど、初心者が丸暗記しそうなのが一番怖いと思う
そういう意味ではある程度経験積んだ人用の概念かもしんない
428デフォルトの名無しさん:2005/04/13(水) 13:06:16
結城本はGoFパターンの雰囲気をわかりやすく伝えているのに対し
GoF本は個々のパターンの長所短所を分析しているような印象。

だから、デザパタ/OOP初心者に薦めるんだったら結城本。GoF本は薦めない。
>>426の初心者ってプログラミング初心者だよね?
429デフォルトの名無しさん:2005/04/13(水) 13:46:19
初心者がGoF本を理解できるのなら、天才と呼んであげよう
430デフォルトの名無しさん:2005/04/13(水) 15:47:54
>>429
天才と呼んでくれ。初心者だが、GoFの内容がスーッと頭に入ってきた。
431デフォルトの名無しさん:2005/04/13(水) 15:49:57
>>429は早く天才と呼んであげるように
432デフォルトの名無しさん:2005/04/13(水) 16:13:22
>>426
その訳文は、某所の超意訳だろw 釣られたなw

ファウラーは、そのblogにはそんなこと書いてないよ。
http://www.martinfowler.com/bliki/Swebok.html
The choice of books it came up with wasn't awful - although I was alarmed that GangOfFour didn't make it to the recommended list.
(It's in the secondary 'further readings' but not in the primary 'Recommended References' section.)
「(Swebokに)載ってる本の選択はそんなに悪くなかった -- GoF本が推薦リストには載らなかったけど。
 (GoF本は、重要度が高い『お勧め参考文献』の章じゃなくて、重要度が一段低い『もっと詳しく知りたい人のための参考文献』の章にあったw)」

GoF本良いけど難解つうてんのはこっちだなw
http://www.martinfowler.com/bliki/GangOfFour.html
433デフォルトの名無しさん:2005/04/13(水) 16:43:17
http://www.martinfowler.com/bliki/GangOfFour.html

>漏れの汁限り、GoF本はこれまで出たOO設計本の中で最高っす。
>つか、たぶんどんなタイプの設計の本と比べても、最高!!!
>ソフトウェア業界にも、無茶苦茶影響与えてるし。まぁJava /.NETのライブラリなんて、
>GoFが作ったプールの中でパチャパチャ泳いでるようなもんだw

>なーんて褒めてみたけど、決して読み易い本ではない罠。
>OO設計の基本原則わかって、「OOえぇなぁ〜♥」って感じるようになってから、初めて嫁。
>そこらへん判ってからじゃないと、この本の真価を読み取るのは無理。つか無理して読んでも無駄。
>つか、そこらへん判ってからなら、努力して読めば、努力に応じたごりやくの得られる良書っす。

>コード例はほとんどC++だけど、C++判んないからって焦る必要はなっしんぐ。
>コード例は、C++の判りにくい機能は使ってないから、C言語さえ理解できりゃ判るようになってるって。
434デフォルトの名無しさん:2005/04/13(水) 16:45:43
>>428
プログラミング初心者、OO初心者、両方の意味っす。
結城本は、クリープを欠いたネスカフェって漢字。
435デフォルトの名無しさん:2005/04/13(水) 17:41:17
>>433
それってファウラーの文章を翻訳したもの?
もしそうなら書いてる内容は2ちゃんねらと大してかわらないな。

何か言ってるようで何も言えてない。ていうか、要約すると3行
になるw

スゲー(・∀・)イイ!!
でも、読み易くはない(´・ω・`)ショボーン
コード例はC++だけどCが分かればダイジョウV
436デフォルトの名無しさん:2005/04/13(水) 20:14:07
いや、ちゃねらー言葉にほんにゃくしただけだってばw

もうちょっとまともな訳でファウラー大先生のありがたい御託を読みたい方は、こちらへドゾー(他は多分に意訳が激しいけど、この項目はまとも)
 http://capsctrl.que.jp/kdmsnr/wiki/bliki/?GangOfFour
437デフォルトの名無しさん:2005/04/13(水) 21:31:42
>>436
まともな翻訳でもやっぱり大したこと言ってない。
凄くいいけど読むには経験が要る。
サンプルはC++だけどCが読めれば大丈夫。
今度は2行で要約できちゃったよw
438デフォルトの名無しさん:2005/04/13(水) 22:14:07
>>437
blogってふつー、そーゆーもんだろ。
もしかしておまいのblogは、受けを狙って書くのかw

つか、マーチンの追っかけやってるアフォもどうかと思うが、
脳みそが2ちゃんでいっぱいいっぱいの>>435-437みたいなのは論外の外だなw
439デフォルトの名無しさん:2005/04/13(水) 22:16:52
つか、ここでレスしてる人って、マジ英語のblog読めないの?

それ、まずいよ。翻訳屋に騙されっぱなしじゃん。技術者としては、能力75%落ちって感じかw
440429:2005/04/13(水) 22:33:36
遅くなってスマン
>>430
君は天才だ
馬鹿と紙一重だ
441デフォルトの名無しさん:2005/04/13(水) 23:44:50
>>438
blog=日記という意識ならそうかもね。
けれども、少しでも書評という意識があったとしたら、この人の
書評には読むべきところがないね。
まぁ、それだけのこと。俺が褒めなくても、他に褒めてくれる信
者を一杯持ってる人なんだから、どうでもいいんじゃね?
442デフォルトの名無しさん:2005/04/14(木) 08:59:53
いやblogは日記だろ、リンク付きの
そこを否定は変だぞ
443デフォルトの名無しさん:2005/04/14(木) 09:01:37
誰でも褒められりゃ少しはうれしいだろうけど、
blog ってかならずしも誰かに褒められるために書くわけじゃ無し。
444デフォルトの名無しさん:2005/04/14(木) 10:30:00
まぁ、ブロガーは120%受け狙いで日記書くわけだがw
445デフォルトの名無しさん:2005/04/14(木) 12:17:42
吉野家コピペとかって、多分最も受けた部類に入るんだろうけど、
書いた人間が狙ってたかどうかは・・・?
446デフォルトの名無しさん:2005/04/14(木) 14:58:09
奈良のおばちゃんは、受け狙ってたわけではないが、
一部ではかなーり受けてる
447デフォルトの名無しさん:2005/04/14(木) 17:01:21
ギャラリーを意識していない女の日記はギリギリ存在を許容できるが
ギャラリーを意識していないブログは存在自体が有害。
中身ないくせしてシャクレタ単語だけは入れたがるから、無駄に検索
に引っ掛かる。
読ませる気がないのなら、人目につかない場所でひっそりとやってほ
しいもんだ。
448デフォルトの名無しさん:2005/04/14(木) 17:12:38
どうでもいいからデザパタについての話をしてほしい。
449デフォルトの名無しさん:2005/04/14(木) 22:34:26
デザパタおんりーつうのはイマドキつらいもんがあるね。
ドメイン・パターンとか、いろいろ扱うべきテーマがあるでしょ
450デフォルトの名無しさん:2005/04/15(金) 08:40:15
奈良のオバチャンは扱うべきテーマか?
451デフォルトの名無しさん:2005/04/16(土) 18:10:43
Eriv Evansが Domain-Driven Design であげてる基本パターンは、
どうなんだろう?

頭が弱い人が見たら、あれ UMLとかOOの基本並べてるだけに見えちゃうんだろうなぁ。
452デフォルトの名無しさん:2005/04/18(月) 06:44:06
今頃デザインパターン云々いってる奴 = 今頃たまごっちに夢中になってる奴
453デフォルトの名無しさん:2005/04/18(月) 08:39:08
バカはすぐ調子にのる
454デフォルトの名無しさん:2005/04/19(火) 01:54:35
455402:2005/04/21(木) 01:22:25
以前、Interpreterパターンについて書き込みした人です。

本を書いた本人に聞いてみました。

>>402 のような場合では、BNFを変形するということで良いそうです。
文法どおりにコーディングすることが重要であって、
文法が変わらなければ、BNFを変形すること自体はオーケーだそうな。
456デフォルトの名無しさん:2005/04/21(木) 11:44:53
良し悪しではなく、趣味の問題、最適化の問題じゃないか、と。
デザパタの話題とは丸きり関係ないじゃねぇか、と。
457デフォルトの名無しさん:2005/04/25(月) 16:28:14
・再帰下降/LL文法でバックトラックするか、
・LR文法でトークン先読みして、当てはまるBNF式を選択
すりゃ解決・・・って言語処理系の教科書ネタだよな。

458デフォルトの名無しさん:2005/04/27(水) 21:00:13
・状態がA、B、Cとあり、それぞれで振る舞いが変わる
・A、B、Cとも共通の変数を「たくさん」扱う
・振る舞いが変わると言っても、影響範囲は一つか二つの関数程度である

こんな時に、分かりやすくするための良い設計が有ったら教えて頂けないでしょうか

今やっているのは、stateパターンにして「たくさん」を一つの構造体にまとめ
各state->func()に引数として渡すやり方ですが、引数のためだけにまとめるのは、どうも妙な気がします。
459デフォルトの名無しさん:2005/04/27(水) 21:14:54
こんな感じ?
派生クラスのdoProcessで状態別の違いを吸収。

class StateBase {
  int val1, val2, val3, val4;
public:
  virtual doProcess() = 0;
};

class StateA : public StateBase{ public: doProcess(){ 実装}:};
class StateB : public StateBase{ public: doProcess(){ 実装}:};
class StateC : public StateBase{ public: doProcess(){ 実装}: };

460デフォルトの名無しさん:2005/04/27(水) 21:19:24
StateBaseが持ってる「たくさんの変数」はprotected:で。
461デフォルトの名無しさん:2005/04/27(水) 21:20:15
あ、ごめん共通の変数ならstaticもつけなきゃだめだ。
462458:2005/04/27(水) 21:24:36
>>459
申し訳ないです。そのやり方だと、val1〜val4が
StateA、StateB、StateCでそれぞれ独立して存在してしまい
「共通の変数」では無くなってしまいまして。

val1〜val4をStateBaseでstaticにするほどじゃないのが、悩みどころで困っています。

とはいえ例付きでのレス、ありがとうございます。
463458:2005/04/27(水) 21:25:41
書いているうちに内容がかぶってしまいました、すいません。
464デフォルトの名無しさん:2005/04/27(水) 23:14:07
>val1〜val4をStateBaseでstaticにするほどじゃないのが、悩みどころで困っています。

Singletonでしか使えないな。ワラ
465デフォルトの名無しさん:2005/04/27(水) 23:57:35
これ俺も良く似た状況に遭うけど難しいよな
クラスでの共通変数じゃなく、インスタンスのまとまり毎に扱いたい共通の変数な
464も言っているが、staticにしちゃうとSingletonでしか使えないし
466デフォルトの名無しさん:2005/04/28(木) 00:38:49
その共通変数のまとまりを構造体なり、クラスなりにまとめて、
その「変数の塊クラス」のインスタンスを、それが必要なオブジェクトで共有させればいいんじゃないの?
467デフォルトの名無しさん:2005/04/28(木) 00:41:20
> 引数のためだけにまとめるのは、どうも妙な気がします。

にループ
468デフォルトの名無しさん:2005/04/28(木) 00:41:51
なんでメンバ変数がstaticだとシングルトン限定になるんだ?
普通に、インスタンスで共有できるんじゃないの?
469デフォルトの名無しさん:2005/04/28(木) 00:55:25
>>468
Stateのクライアントとなるインスタンスが
2つ以上あるだけで破綻するから
470デフォルトの名無しさん:2005/04/28(木) 01:52:12
>>466
俺も普通にそうしてる。
共有される変数を一つのオブジェクトとして扱うのは自然な事に
感じるんだが・・・・・・
471デフォルトの名無しさん:2005/04/28(木) 02:05:39
でもそれって見事に実装の都合から設計しちゃってるよな
472デフォルトの名無しさん:2005/04/28(木) 02:09:24
contextとかいう名前の変数にして引数で連れ回すか、
全体を統括するなんかクラスをもうけて連れ回さなくて済む
ようにするか。

473デフォルトの名無しさん:2005/04/28(木) 07:43:17
stateパターンなら「共通の変数」は、
それを保持する為のクラスを作る。

で doProcess() の引数にする。

class Context {
public:
int val1, val2, val3, val4;
StateBase* currentState;
};
class StateBase {
public: virtual void doProcess( Context* ) const = 0;
};
class StateA : public StateBase {
public: void doProcess( Context* ) const;
};
class StateB : public StateBase {
public: void doProcess( Context* ) const;
};

staticなクラスメンバ( 本質的にグローバル変数 )なんて使うと、
「状態を持つもの」が2個3個と増えたときすげーこまる。
474473:2005/04/28(木) 07:46:46
あれ?なんか、俺の周りだけ時空が遅れているようだ
475デフォルトの名無しさん
stateオブジェクトの構築時にcontextを引数で渡してやれば
stateのメソッド呼び出しの時に渡してやる必要はないね。