ウェブプログラミングで使えるデザインパターン (170レス)
上下前次1-新
25(2): 03/11/27 12:31 ID:??? AAS
ごめん、クラスの組み合わせがデザインパターン?
つかデザインパターンを易しく説明きぼんぬ。まじで。
26: 03/11/27 13:01 ID:??? AAS
GOFならぐぐればいくらでもでてくる
27: 03/11/27 13:58 ID:??? AAS
Web Service なシステムを作る上でのデザインパターンなら考えられるかも
ConcreteStrategy を一個の CGI として実装して… うーいまいちメリットないな
28(2): 03/11/27 14:15 ID:??? AAS
フォームデータ処理
if
obj=new Hoge(query);
else if
obj=new Piyo(query);
else if
obj=new Foo(query);
else if
obj=new Bar(query);
・・・・
obj.proc
>>6とあんま変わらんな
29: 03/11/27 16:50 ID:??? AAS
MVCさいこー。
いや、本気で。
30: 03/11/27 17:03 ID:??? AAS
テンプレート使えばモデルとビューは分離できるな
31(3): 03/11/27 22:02 ID:0zBWj9/p(4/5) AAS
>>25
オブジェクト指向にクラスが必須ではないのと同じくらい、
デザインパターンにオブジェクト指向が必須という訳ではないと思う。(私見)
オブジェクト指向以外でも応用することが出来ます。
>>28
>>22 の方法、伝わらなかったかな。サンプルこんな感じです。
use CGI;
my $query = new CGI;
my $app = new App(
func1 => \$func1,
func2 => \&func2,
func3 => \&func3
);
$app->exec($query->param('mode'), $query);
sub func1 { my ($query) = @_; print "func1\n"; }
sub func2 { my ($query) = @_; print "func2\n"; }
sub func3 { my ($query) = @_; print "func3\n"; }
package App;
sub new {
my ($class, %menu) = @_;
bless({menu => \%menu}, $class);
}
sub exec {
my ($self, $key, @args) = @_;
if (ref $self->{menu}->{$ket} eq 'CODE') {
&{$self->{menu}->{$key}}(@args);
}
}
32(1): 03/11/27 22:15 ID:0zBWj9/p(5/5) AAS
>> 23
アプリケーションサーバや、フレームワーク内でなら使われてる例は多いよね。GOFに限らず。
うーん、OOP/GOF な話題がメインなのかな、ここ?
WEBパターンとかの話題はスレor板違い?
外部リンク:www.c2.com
33: 03/11/27 22:29 ID:??? AAS
>>31
非オブジェクト指向言語でオブジェクト指向ごっこしたら大体は破綻するけどね。
言語もパターンも使いよう。
あんたの実力はソースコードレビューではなく客先試験で発揮して下さいよって感じになりかねない。
34(3): 03/11/27 23:54 ID:??? AAS
25です。
>>31
ますます分からなくなりました。
これって特殊な例じゃない?
35(1): 03/11/28 00:49 ID:??? AAS
>>34
だからぐぐれよ
解説サイトいくらでもあるだろ
それか本かって読め
36(1): 03/11/28 02:36 ID:??? AAS
>>34
だからぐぐれよ
解説サイトいくらでもあるだろ
それか本かって読め だってよ。(w
37(1): 03/11/28 06:43 ID:??? AAS
>>34
だからぐぐれよ
解説サイトいくらでもあるだろ
それか本かって読め だってよ。(w だってよ。(w
38(2): 03/11/28 07:55 ID:??? AAS
PEARのソースコードは
デザパの勉強なるよ
39: 03/11/28 09:25 ID:??? AAS
>>35-37みたいなのはプロトタイプパターンなのかな
40: 03/11/28 10:57 ID:??? AAS
いまだに(wとか使う奴いるんだな・・・
41: 03/11/28 12:33 ID:??? AAS
(w
42: 03/11/28 17:57 ID:9mFpNgVw(1) AAS
ごめん、混乱させるような事言っちゃたかな。>25
外部リンク[html]:www.hyuki.com DesignPatterns FAQ日本語訳
パターンとは、あるコンテキスト(状況・背景)上の問題に対する一つの解決策。
繰返し発生するコンテキストは、フォームデータ処理などで発生する if else の条件分岐 like >6 >28
問題は、条件分岐の文にbugが混入しやすい事
解決策の一つは、>22 冗長な分岐を排除する。
これなら、オブジェクト指向でなくとも、ハッシュの様なデータ構造さえ使えれば適用できるでしょう?
これだけでは不十分で、これ以外にもこのパターンはどう言った時に適用すると良いとか、
適用した場合にどういった状況になるか、他に考慮するべき事もパターンに記述されます。
詳しくはパターン・ランゲージについて調べてみて。
"パターン"が理解出来たら、デザインパターンはすぐ理解出来ると思う。でも
単純に、すべてのクラスの組合せがデザインパターンと呼ばれるわけではない。(FAQにもそう書かれている)
"パターン"として有益な情報に成り得るのは、特定の条件の元の問題に対して。
組合せを指して"パターン"と呼んでいるのではないので。
デザインパターンの考え方は、オブジェクト指向をサポートしていない言語にとっても有用だと思う。
別に非OOP言語でのOOを推奨しているわけではないよ。>18 >19 >24 に対するフォローのつもり。>32
43: 03/11/28 19:07 ID:??? AAS
コソーリとデザインパターンって何と聞いていいですか
44(3): 03/11/29 13:48 ID:??? AAS
>>38
phpにおいて、というならまぁそうなのかもな。
リファクタリングされてないようなのがいっぱいあるけど。
なんか重いし、無駄が多いし、好きになれない
45: 03/11/29 21:36 ID:??? AAS
>>44
>リファクタリングされてないようなのがいっぱいあるけど。
は再利用の際の技であり成果物にわざわざ適用しても仕方ないのでは?
46(4): 03/11/29 22:56 ID:??? AAS
>>44
実運用で使うようなモジュールはだいたい限られてるし、
そういうモジュールはよくメンテされてて
実用的で使えるのは結構あると思うけど。
ライブラリからリファクタリングしないと
重かったりして困るようなパフォーマンス命な
仕事なんてやったこと無いので
そういう時に使うべきかどうかというのは
判断が必要かもしれないけど
47(3): 03/11/29 23:21 ID:??? AAS
>>46
だな。
なんらかのライブラリ群や、フレームワークを使ったとき、
ハード資源消費量は、無駄な機能の占める割合が高かったりするもんな。
それでも、漏れらは使うのさ。
信頼性のあるライブラリだし、開発コストが下がるから。
客から動作がにぶくなってきたって、言われたら、
「分散しましょう!サバ増やしましょう!お任せ下さい!」ってな感じで対応。
宇摩ー。
48(1): 03/11/29 23:53 ID:??? AAS
>>47
自作自演。
49(3): 03/11/30 00:32 ID:Fs/0s5IP(1) AAS
>>31よりもっと使えるやつカモン
実際modeで分離なんて簡単にはいかない
50(2): 46 03/11/30 00:35 ID:??? AAS
>>48
してないっす
>>49
Webで現実的な問題はやっぱり時間
金銭的なコストというよりも時間のコストが
惜しいケースが多い
(もちろんそれが金銭的なコストにも
繋がってくるのはそうなのだろうけど)
PHPは大規模なwebアプリにも通用するとは思うけど
確かにフレームワーク的なものは発展中
だからこそPEARがその役割を担っていくと考えてる
PHP5ではよりPEARの役目は大きくなると思う
51: 03/11/30 00:43 ID:??? AAS
>>50
PHPで大規模システムって無謀だと思う。
52(1): 03/11/30 00:57 ID:??? AAS
>>49
commandパターンで実装
>>50
モノにもよるんじゃない
パフォーマンスも求められるものはキツいかもしれないが
ただ単に規模だけが大きいんなら
PHPでも十分メンテナンスしやすい
再利用性そこそこのもんはちゃんと作れると思う
53(1): 03/11/30 01:17 ID:??? AAS
>>52
commandパターンがどう使えるのかぜんぜんわかんね
54: 03/11/30 01:33 ID:??? AAS
>>46
リファクタリングの目的はパフォーマンスを多少犠牲にしても
メンテしやすいコードを作ることだよ。
55(1): 03/11/30 01:49 ID:ENFs/Hl7(1/2) AAS
>>53
じゃあ使わんでいいよ、それだけのもんだ
なんで使えるのかなんで使うと得するのか
調べるコストをかけれないなら
最初から使わないのも選択のひとつ
56(1): 03/11/30 01:55 ID:??? AAS
>>55
どーせ言ってみただけなんだろぅ?
57: 03/11/30 02:35 ID:ENFs/Hl7(2/2) AAS
>>56
ああもちろんだ
俺も別に完全になんか理解してるわけない
つーか何しようとしてるか知らんが
その>>49のmode毎にたいそうな処理が
あるならともかくどうせおまえらの事だから
書き込みか確認かとかそんなだろ
なら>>6で別にいいよ
command毎にクラス作って別々の実装のコード書いて
呼び出しが $com->exec(〜) に一見なったところで
>>6がダサいからと単純に割り切るような奴が
中身実装しても良くなるとは思えん
58: 03/11/30 03:11 ID:??? AAS
>>>6がダサいからと単純に割り切るような奴が中身実装しても良くなるとは思えん
この部分には全く根拠がないし、見当外れだな
59(1): 03/11/30 09:48 ID:??? AAS
>>6
なが〜い関数無しのスクリプトが見えます・・・。
60(3): 03/11/30 10:01 ID:??? AAS
最近WebProg飽きたからやってないけど、昔はこんな感じに組んでたよ。
勝手にSDM-VCモデルとか呼んでたけど。
後から調べたら似たような思想の設計法とかやたらとあってちょっと欝。
S:ストレージ
ファイルとかDBとかを同じメソッドでアクセスできるようにするためのラッパクラス。
三層スキーマの内部スキーマ相当でODBCとかと似たような概念。
ここをモジュール化することで次回から使い回しが可能。
D:データ
ストレージに保存するエンティティ(データ)クラス。
同概念スキーマ相当。JDBC的な考え方。
Sを差し替えるだけで様々な媒体に永続化が可能なため移植が楽に。
M:モデル
言うまでもなく、MVCのM。
ビューに依存しないロジックを提供する。
VC:ビュー&コントローラ
リストボックスとか汎用的な部品だとVとCの分離には激しく意味があると思うが
オーダ特化のVはむしろCと一緒に管理した方が便利という判断でいっしょこたんに。
マンマシンインターフェースを担当する。
61(1): 03/11/30 12:35 ID:??? AAS
>>60 おれもそういう経験あるよ。
有名なモデリングパターンや、デザインパターンを知らかったとき、
もっと効率良く開発したいと心掛けながら、設計していたら、
結局有名なパターンと同じ方法で設計してた。
62: 03/11/30 16:29 ID:??? AAS
>>59
( ´,_ゝ`)プッ
63(1): 03/12/01 02:53 ID:i/vnv4B8(1) AAS
>61
質問いいかな?
MVCとかってパターンランゲージの用語で言う「パターン」に含まれるの?
モデリング・パターンのパターンとか?MVCにもパターンの様なもの
(どういった時にMVCで設計するといい。とか)の記述がある?
自分のデザインパターンに対する認識が他の人とは違ってるよーな気がしてきた。
「パターン」のコンテキストやフォース(どういった時にそのパターンを適応するといい。
等といったパターンの目的や背景やその制約)の部分が抜けてる様な気がするんだけど。
64: 03/12/01 06:30 ID:??? AAS
>>63
>>6をパターンとかほざいてるんだからなんでもありっしょ。
65(1): 03/12/01 10:49 ID:??? AAS
>>46-47
いや、>>38でデザパの勉強になるといわれての>>44では?
俺も好きになれない。
よく使いたいと思うものに無駄が多いように見えるから。AuthしかりDBしかり。
sql作るのは Builder & Directorでやって欲しいし、
CREATE 〜なんて AdaptorやDecoratorでいい。
メソッドの中にベタ書きだし、クエリ発行関数はあちこちに散らばってるし。
詳しいわけじゃないけど、これがデザインパターンといわれるとなんか抵抗あるわけですよ。
それでもPEARスレはのぞいちゃうんだけどね。
66: 03/12/01 11:09 ID:??? AAS
無駄が多いんだけならいいんだよ。その分汎用性が高くなってるわけだし。
でもダサいコードが多いじゃん。あれなら Perl で CPAN の方が(゚Д゚)ウマー
67(1): 03/12/01 13:06 ID:??? AAS
>「パターン」のコンテキストやフォース(どういった時にそのパターンを適応するといい。
>等といったパターンの目的や背景やその制約)の部分が抜けてる様な気がするんだけど。
それは、多くの経験の集約から「このパターンはこのケースに使える」というのが出てくるのであって、
今は「こういうパターンがあるんじゃね?」って段階だろ。このスレ的には
68: 03/12/01 19:00 ID:??? AAS
>>60
いわゆるDAOとValueObjectですね。
Javaだとそのあたりを担ってくれるフレームワークも多いけど、
PHPなんかだとこれからの分野なのかな。
69(1): 03/12/01 19:39 ID:??? AAS
>>65
成程ちょっと納得
じゃあデザパの勉強として
DBのリファクタリングにチャレンジしてみる
70: 03/12/02 06:42 ID:??? AAS
>>47
>「分散しましょう!サバ増やしましょう!お任せ下さい!」ってな感じで対応。
「しんどい」仕事をふやさんでも・・・。
71: 03/12/02 06:42 ID:??? AAS
>>69
リファクタリングとチューンナップを一緒こたんにしてないか?
72(2): 03/12/02 06:46 ID:??? AAS
リファクタリングって再利用しやすいようにメソッド名を適切に書き換えたりするくらいじゃないの?
ロジックを変更すればそれに影響するすべての部分に再試験が必要になるわけで
それって非常に効率が悪いわけで。
それをやらずにごにょごにょ言ってるなら非常に危険なソフトウェアがちまたにあふれることになるかと。
73: 03/12/02 08:27 ID:1mz3fQJ8(1) AAS
>67
パターンランゲージってそういった経験を文書化するものじゃなかったっけ?
>PHP/DesignPattern
horde の人とかデザインパターンを結構意識して使っている様だよ。
PEARだったらLog関連のクラスがGoF適用例として参考になると思う。
74: 03/12/02 10:58 ID:??? AAS
PEAR みたいなダサいもん、参考にすんなよ。
75: +++ 03/12/02 11:11 ID:??? AAS
>>72
いやもっとあるよ。オレは詳しくはないけどね。
もちろんリファクタリングするにはテストファーストが重要だから。
それがなけりゃダメ。
76(1): 03/12/02 14:00 ID:c/j/bWHB(1) AAS
デザインパターンて何?
77: 03/12/02 14:11 ID:??? AAS
>>76 ずばり!システムデザインのパターンです。
78: 03/12/02 17:54 ID:??? AAS
なんでデザインなんだろう。
79(2): 03/12/02 19:32 ID:/3byaW6X(1) AAS
デザイン≒設計
80: 03/12/02 20:02 ID:??? AAS
>>79
81(1): 03/12/02 21:34 ID:??? AAS
デザインパターン≒下絵
?→?→?
↓ ↑ ↑
?→?←?
82: 03/12/04 14:10 ID:??? AAS
>>72
外部リンク:objectclub.esm.co.jp
83: 03/12/05 00:56 ID:??? AAS
おすすめの書籍を教えてよ。
リファクタリング+デザインパターンもの?
84: 03/12/05 22:40 ID:??? AAS
Java言語で学ぶデザインパターン入門
85(3): 03/12/21 01:33 ID:hM57n5k9(1/2) AAS
昔Observerを使ったMVCを知って、
『こりゃいいや!』ってWebプログラムで使おうとして
かえってごちゃごちゃになった。
86(1): 03/12/21 01:36 ID:hM57n5k9(2/2) AAS
あ、本題書き忘れた。
Compositeパターンはツリー型掲示板なんかにうってつけじゃないの?
87(2): 03/12/21 10:57 ID:??? AAS
>>86
そうですか?
なんかただの木構造と混同してないか?
88: 85 03/12/21 13:13 ID:??? AAS
>>87
ん?……あ、そうか。
スレッド(トピック?)の下にスレッドがあるような再起構造じゃないや。
でも、子記事を持つものをComposite、持たないものをLeafと見立てて
使えないかな?
それとも俺何か勘違いしてるかな?
89(3): 03/12/21 15:35 ID:??? AAS
>>87
木構造を表現するのに適切なデザインパターンだと思うけど?> Composite pattern
>>79,81
パターン言語には、その(solution)解法を適用する場合のコンテキスト
(背景・解決する問題の状況)や、force(制約・制限)等が書かれているはず。
更に言えば、具体的な事例や、そのパターンを適用した際に起こる副作用とかトレードオフ等、
こういった一連の状況を指してパターンと呼んでいるんじゃなかった?
solutionの部分だけを指してパターンと呼んでいる人が多い様に見受けられる。
FAQにもパターンという表現は誤解を招きやすい言葉だったって書かれているけどね。
だからと言って誤解されたままでは有益な議論は出来ないよ。
一言で説明するのは難しいかも知れないけど、設計と言い切ってしまうのはどうかな?と思う。
デザインパターン => オブジェクト指向での設計上の問題に対する解決策とそれに関する知見。
>>85
かえってごちゃごちゃになったのなら、どうしてそうなったのか考えてみよう?何か原因あるはずだよね?
ここで、パターン使ってこうなったからパターンは使えない、なんて短絡的な発想はせずに。
どうすれば、その問題をスマートに解決出来るんだろうと考えてみる。
例えば、Observerパターンで知られている問題点は、
Subjectが複数になった場合に保守や拡張が困難になる、その場合はSubjectに中間層を設けるなど。
パターンの説明には必ず関連するパターンへの参照や、例外/制限事項等が書かれているはずです。
クラス図だけ見真似てデザインパターンを使ったつもりに浸っていると、
パターン使った=>更に悪化 という*パターン(繰返しの意味で)*に陥りやすいです。
90(1): 03/12/21 15:43 ID:??? AAS
>>89
めんどいから要約してくれ。3行位に。大体それくらいの情報量だろ?
91: 03/12/21 15:55 ID:??? AAS
無理。
ジャンプ&フローで要約性がないパターン。
92: 03/12/21 17:02 ID:??? AAS
>>90
>>89を要約すると「お前らもっと勉強しろ、俺はこれだけ物知りだ」になります
93: 85 03/12/21 17:14 ID:??? AAS
>>89
ああ、ごめん、言葉が足りなかった。
>>85は
Observerを使ったMVCはGUIなソフトとかには使えるけど
Webアプリケーションなんかには向かないぞ、気をつけろー。
Webアプリケーション用のMVCはJ2EEとかを参考にしろー。
って意味だったんです。
94(1): 03/12/22 01:36 ID:??? AAS
CGIはGoF的なデザインパターン使って作っても
オブジェクト生成して一回で捨てちゃうもんな
95(1): 03/12/22 01:50 ID:??? AAS
こんな100レス近くも語ってて
結局>>6を改善することはできないんですか?
96(1): 03/12/22 07:37 ID:??? AAS
>>94
再利用できる要素はいっぱいあるんだけどな。
ファイル操作とか毎回組んでも面倒くさいしバグの入り込む余地があるしろくな事がないと思うよ。
97(1): 03/12/23 02:36 ID:??? AAS
>>95
>>6みたいなのが良いとは思ってないが、
>>6の代行になる優れたコードがあったとしても
結局>>6レベルくらいで求められる規模のwebAPPの場合
実際のところ>>6が一番速く書けて一番シンプルで
一番速く動くコードだったりしちゃわないか
98: 03/12/23 10:20 ID:??? AAS
>>97
再利用生が抜けてるよ。
99(1): 03/12/26 13:59 ID:5BZ0FoxA(1) AAS
>>96
ファイル周りで、こういう処理にはこういうパターンがいいよ、みたいのある?
趣味でCGIスクリプト作ってるけど結局ファイル入出力が処理の中心で、
ここをシンプルに書ければだいぶ綺麗になるんだけどなぁ。
100(1): 03/12/26 23:27 ID:??? AAS
>>99
>>60
後、今、RubyとXML使って汎用的なCGI向きなファイルシステム書いてます。
101: 03/12/26 23:57 ID:??? AAS
だれか
>ファイルとかDBとかを同じメソッドで
>アクセスできるようにするためのラッパクラス。
これ作ってください。
102(1): ヽ(´ー`)ノ 03/12/27 04:55 ID:??? AAS
> だれか
> >ファイルとかDBとかを同じメソッドで
> >アクセスできるようにするためのラッパクラス。
> これ作ってください。
Perl の DBI に当たるクラスって Ruby には無いの?
103: 100 03/12/27 09:14 ID:??? AAS
>>102
アルみたいですな。知らなんだ。
ちょっと興味があるんですが、データをCSVとかXMLに落としてくれるドライバって存在するんですか?
104: 03/12/27 22:23 ID:??? AAS
Ruby/DBI 外部リンク:ruby-dbi.sourceforge.net
105: 04/01/03 11:48 ID:2WhaiS3p(1) AAS
Bridgeパターン
外部リンク[php]:www.lyricfathom.com
106: 04/01/03 14:16 ID:/y0BIE8s(1) AAS
PHPのパターンならここが有名でしょうね。
外部リンク:www.phppatterns.com
107(3): 04/01/05 19:45 ID:??? AAS
PHP、言語として機能が足りてないからデザパタに向いてないよ。
典型的な例が Singleton。
108(1): 04/01/05 20:23 ID:??? AAS
$a = NULL;
function GetSameObject(){
global $a;
if($a == NULL){
$a = new SameObject();
}
return $a;
}
109(2): 04/01/07 09:41 ID:??? AAS
>>108
だから、そういう小汚いコード書かなきゃイカンから言語として機能が足りてないんだろ。
PHP5 だと static あるから Singleton は書けるようになるが…それでもどうかと思う。
110(4): 04/01/07 18:00 ID:??? AAS
>>109
PEAR パッケージでよく使われてますが、 PHP4 でも普通に書けますよ。
class Hoge
{
function &singleton()
{
static $instance;
if (!isset($instance)) {
$instance = new Hoge;
// $instance = HogeHoge::factory;
}
return $instance;
}
$instance = &Hoge::singleton();
111(2): 107 04/01/08 05:49 ID:??? AAS
>>110
>>109 の言う「小汚い」部類じゃないかね、そのコードは。
クラス内唯一のインスタンスなんだから、論理的に言えばクラスが static 変数として持つべきだろう。
> PHP5 だと static あるから Singleton は書けるようになるが
と言っている時点で >>109 の言いたい事は自明だと思うんだが…。あんた大丈夫か?
PEAR のコードや Do You PHP にあるデザインパターンのサンプルでも良く見掛けるが、
PHP4 自体の機能が足りずに他の言語ではしなくていいような事をしている点がいくつもある。
少くとも俺は PHP はオススメしない。
112: 04/01/08 06:38 ID:??? AAS
>>111
デザパタの本の「はじめに」とか「概要」を読み直すことを推奨。
113: 04/01/08 06:44 ID:??? AAS
>>111
てことはCはダメ言語でerronoなんて使ってるunixは目も当てられないって事になるのだろうか。
そんなことだからいつまでもプログラマ + Web特化なんだな。
114: 04/01/08 06:47 ID:??? AAS
まぁ C はダメ言語だろうな。
115(1): 04/01/08 08:32 ID:??? AAS
>>110
クラス・メソッドを使わずnewすると普通に別のインスタンス作成出来るよね?
116(1): 110 04/01/08 09:17 ID:??? AAS
>>115
できますよ。
言語特性や制限はありますが PHP や Perl では Private メソッドも含めてそういう
ものは書く側が慣習的に守るというだけのことです。 111 さんがいうようなことも
当然ありますけど、だからといってその言語の利点があるわけですから使い分けるの
が良いというだけの話でしょう。
117(2): 04/01/08 14:14 ID:??? AAS
そうだなあ、singleton という、
コンストラクタの実装とクラス変数に大きく依存するパターンは、
PHP の言語仕様とインピーダンスミスマッチが大きい、ということは言えそうに思う。
ただ、GoFパターン全部がそういうわけではなく、
むしろ singleton が例外的だとも言える。
つか、そもそも singleton ってウェブプログラミングで使う?
まあ、singleton 以外のパターンも今のところウェブプログラミングでの使い道が
あまり見つかってないようではあるが。
しかし、ぱっとすぐ思いつかないが、
singleton 以外でも PHP が向かないパターンはありそうな感じではある。
>>107 への宿題として、
singleton 以外で PHP が向いていないと思われるパターンを提出せよ。
「ウェブプログラミングで使える」というスレの趣旨を満たすとモアベターだが、
さすがにそこまでは難しいか。
118(1): 04/01/08 20:51 ID:??? AAS
>>116
一応、慣習や暗黙の了解みたいなのは理解しています。が、
言語としての機能が足りていない部分という論点に関して言えば、コードの奇麗汚いではなくて
singletonパターンの条件を完全に満たす事が出来ない点じゃないかな。と思った。
>>117
例:データベースへ接続するクラスをSingletonにする。
ウェブプログラミングでもアプリケーションサーバ等フレームワークにはよく使われてるよ。
119: 107 04/01/08 23:07 ID:??? AAS
>>117
宿題も糞も、PHP のデザインパターンのサンプルコード読めよ。
その辺の問題点も全部書いてるわ。
120: 04/01/08 23:24 ID:??? AAS
まぁ、極論すればグローバル変数をラップしただけという代物だ。
気を付けてグローバル変数を使用するのと早々大差はない。
121: [age] 04/01/09 07:36 ID:??? AAS
AA省
122(1): 04/01/09 10:45 ID:??? AAS
>>118
フレームワーク内で使われるのはわかるが
DBのコネクションプールはそうやってフレームワークが管理してくれるはずだから
ユーザがコード書く段階では気にしなくていいぢゃん。
Perl ですら mod_perl + Apache::DBI 使えばいいし。
と思ったが、よくよく考えてみたら、PHP にはコネクションプールが無いのか。
それは確かに問題だな。
123: 110 04/01/09 11:34 ID:??? AAS
>>122
私の知る限りでは Apache::DBI はコネクションプールをしているわけではな
くて PHP の持続的接続と同等の機能を提供するはずです。
つまり DSN 毎にコネクションを維持するだけ (さらにプロセス毎に) だと理
解していますが。
さらにコネクションプールは SQL Relay 等で実現できますよ。
124(1): 05/01/27 00:47 ID:??? AAS
一生懸命読んだけど23の中の一個も理解できませんでした
どうしればいいでしょうか。
早くオブジェクト脳になりたいんです!
125: 05/01/27 08:39 ID:??? AAS
>>124
オブジェクト指向を学ぶ
126: 2005/04/03(日)21:00 ID:??? AAS
保守
127: 2005/04/24(日)12:25 ID:??? AAS
PHP5だとデザインパターンも生きてくるのかな?
128: 2005/05/02(月)21:38 ID:M34Qp7Tn(1) AAS
プログラムの改修作業で、既存の動いているクラスを
変更なしに機能を追加したりするときにアダプタっていう
デザインパターンを使うのかな?使い方間違ってる?
129(1): 2005/05/02(月)22:18 ID:??? AAS
こっちで聞いた方が詳しく教えてくれると思うが、既存のクラスの機能を拡張するなら違うと思うぞ。
2chスレ:tech
130(1): 2005/05/03(火)22:22 ID:??? AAS
>>129
実は仕事で既に動いているPHPプログラム改修作業をすることに
なったのですが、
・非常に見づらいソース。開発者は既に退社&ドキュメントは無し。
・納期は短いのでリコーディングすることはできない。
・動作自体には問題はなく、現在正常に稼動中。
・機能拡張もあり。
という状況です。ソースが非常に見づらく保守性が著しく低いのと
機能拡張は大幅な仕様変更になるので、できればリコーディングしたい
ところなのですが、納期も無いことですし、何より現在問題なく
稼動中なのでそれはできません。
そこでなるべく既存のクラスに手を加えずに、機能拡張をしたい
という感じです。
このような場合、既存のクラスを継承させた新しいクラスを作り、
動いている部分は利用しつつ、新規の仕様に合わせた設計に作り変える
というやりかたを考えているのですが、これは別にデザインパターンという
わけではなくて、ただのOOPの継承を使ってるだけということですかね。
ちなみに、上記のような場合皆さんならどのような手法を取りますか?
識者のご意見をお聞かせいただけたらと思います。
131(1): 2005/05/05(木)23:01 ID:??? AAS
手法云々以前に、そんなDQNな物を担当させられる事になったら
漏れなら先ず上司に現状を報告し、指示を仰ぐな
1.現状のプログラムが如何に問題点の多い物であるか
2.前任者の無能さを叩き、リコーディングの必要性の訴え
3.リコーディングすれば納期に間に合わせる事は難しい。
しかし前任者のプログラムに手を入れた場合、(極端に保守性が悪いので)変更によって障害が起きる可能性が高く、納期が大幅に遅れる危険がある。
以上を伝えて今後の方針を決め、増援を求めるなり何なり対策を協議して・・
(要は、「責任逃れの道はちゃんと作っておけよ」と)
132: 130 2005/05/20(金)00:05 ID:??? AAS
>>131
遅レスですが・・・
非常に勉強になりました。
133: 2005/05/28(土)13:42 ID:??? AAS
保守
134: 2005/06/11(土)13:52 ID:??? AAS
PHPでデザインパターン使ってる?
135: 2005/06/23(木)01:29 ID:l0fPbzln(1) AAS
外部リンク[htm]:www002.upp.so-net.ne.jp
>>6のかわりってこれでいいんじゃね?
136: 2005/07/14(木)05:02 ID:Dw3R1Zsm(1) AAS
良スレだと思うんだけど
みんなデザインパターンってあまり知らないのか?
137: 2005/07/14(木)05:09 ID:??? AAS
ムのスレもそうだけで知ってる人ってほんと書かないね
138: 2005/07/14(木)05:35 ID:??? AAS
このスレはお題があれば再生するんじゃないの。
139: 2005/07/14(木)20:33 ID:??? AAS
良スレだと思うんだけどな。
140: 2005/07/14(木)21:17 ID:??? AAS
待ったり進行でいいんジャマイカ?
141: 2005/08/09(火)19:13 ID:1DO6YyCD(1) AAS
まあ、とりあえずJ2EEパターンやPoEAに書かれているパターンは抑えるべきだと思うが。
後者の場合、Webは選択肢の一つに過ぎないけど参考になる。
これらをPHPに適用するとどうなるか考えるのも面白い。
142: 2005/09/02(金)22:29 ID:??? AAS
このスレ死んでるのか^^; 既に語り尽くされてしまっているからなぁ。
143(1): 2005/09/08(木)20:14 ID:UAazRTeh(1) AAS
全然尽くされてないだろ。
外部リンク[php]:www.phparch.com
とりあえずPHP向けの本が出てるから皆買おう。
そうでなきゃ話しも出来ん。
144: 2005/09/09(金)01:34 ID:??? AAS
PHP向けのは要らない
145(1): 2005/09/13(火)13:39 ID:??? AAS
>>143
ペーパーバッグなのにやたら高いね
146: 2005/09/19(月)05:28 ID:??? AAS
>>145
> ペーパーバッグ
紙袋?
147(1): 2005/09/19(月)10:34 ID:??? AAS
ペーパーバックって何よw
148: 2005/09/19(月)11:32 ID:??? AAS
>>147
「ペーパーバック」なら表紙が紙でできた安もんくさい本のことかな。
149: 2005/09/20(火)02:45 ID:??? AAS
うわ、今まで
ペーパーバッグとペーパーバック間違えてた
ビートルズの曲もペーパーバッグライターと思ってた…
150: 2005/09/20(火)02:46 ID:??? AAS
ペーパーバッグライター の検索結果 約 148 件
よかった他にもたくさんいた…
151: 2006/01/19(木)19:25 ID:tf3J2l5I(1) AAS
俺の場合、Singleton、Template Method、Factory Method、
Strategy、あたりを使うねぇ。
上下前次1-新書関写板覧索設栞歴
あと 19 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.035s