探検


ウェブプログラミングで使えるデザインパターン

1nobodyさん
垢版 |
03/11/22 06:56ID:Lh+gL3bz
ゲッチューポン
03/11/22 11:16ID:???
結構良スレっぽいスレタイなのに、>>1がクソで萎え
03/11/22 22:25ID:???
こんなスレはシングルトンであって欲しいものだ。
4nobodyさん
垢版 |
03/11/22 22:44ID:LH4aw5t2
とにかくリクエストとレスポンスが一組になる
1パターンリクエストに対し数パターンのレスポンスがあって、他パターンのリクエストと共通だったりする
03/11/22 23:15ID:???
>>4
で?
03/11/23 19:42ID:???
サーブレットは知らんがCGI、PHPあたりだとだいたい

フォームデータ処理
if
 エラー表示1
else if
 エラー表示2
・・・
else if
 処理1
 フェーズ1表示
else if
 処理2
 フェーズ2表示
・・・・
って感じになるな
03/11/23 21:40ID:???
>>6
えと、>>1はGoF辺りのデザパタを聞きたいんではないかと。

後、それダサい。
03/11/23 22:36ID:???
>>7
だって>>6=>>1だもん
じゃあカコイイやつカモン
03/11/24 15:47ID:???
ここでいうデザインパターンってなんですか?
10nobodyさん
垢版 |
03/11/24 23:53ID:6o1aVvpy
GoFに限定しないオブジェクト指向にも限定しない
寧ろウェブプログラミングのためのパターン
03/11/25 17:04ID:???
GOFのどれがWEBプログラミングに使われるんですか?
12nobodyさん
垢版 |
03/11/26 12:58ID:e6YvtpHr
PHP関連でそういった事を解説してるサイトなかった?>WEBPrograming/DesignPattern
Stateパターンでログイン・ユーザの認証状態を管理する。etc

コーディングに特化しない話題でもいいなら、
WEB関連&&デザインパターンという事で、こんなサイトも。
http://www.designpattern.lu.unisi.ch/index.htm
03/11/26 13:08ID:???
まずはPerl5やPHPにGoFを翻訳することからはじめるか
Perl5やPHPって継承やインターフェース使えたっけ?
03/11/26 16:20ID:???
http://www.pat.hi-ho.ne.jp/dimension/sample/sample_class_list.shtml
のサイトでもPHPでデザパタしてる。
プログラム板にも初心者向けのデザパタスレがあるから、
デザインパターンって何?って人はそちらも合わせて見るといいかと。
15nobodyさん
垢版 |
03/11/27 00:07ID:0zBWj9/p
>>13
GOFの実装例なら、すでに幾つかありますね。
http://www.perldesignpatterns.com/

Perl5 や PHP4 にはインターフェースのための構文は用意されていないので、
(標準では)Javaみたいにインターフェースで定義したメソッドの実装を強制する事は出来ません。
多くのサンプルでは、インターフェース代わりに空メソッドを定義しているだけか、
実行時にメソッドが実装されていなければ終了する。と、いったものが殆んどの様です。

インターフェースを継承したクラスがそのメソッドを実装しているか確認したいのであれば。
perlについては、CPANにコンパイル時にインターフェースをチェックするモジュールがあります。
PHPでは、PHP5からインターフェースが導入されています。

03/11/27 00:41ID:???
ごめん、インターフェースって何?継承とは違うのかい?
03/11/27 02:07ID:???
インターフェースは知らんけど継承はわかるのか?
なんじゃそりゃ
03/11/27 02:15ID:???
ウェブプログラミングじゃあんまGoF通用しないんじゃね?
Perl PHP Rubyじゃインターフェース無いし、GUIもHTML吐いて作るわけだし、
インスタンスを次のセッションで使うのもしんどいじゃん
03/11/27 06:30ID:???
>>18
>Perl PHP Rubyじゃインターフェース無いし
プロトタイプベースだからいらんでしょ。アホか。

>GUIもHTML吐いて作るわけだし、
むしろその辺のGUI部品より融通が利くわけだが。


後、J2EEとかASP.NETはWebプログラミングに入らないんですか?
完全無料主義者のあなたの中では。
03/11/27 07:30ID:???
オブジェクト指向が必要なほど大規模になることもなく
やっぱり>>6みたいなものになっちまうのか

>>6を汎用的に書ければいいんだけど
21nobodyさん
垢版 |
03/11/27 07:31ID:0zBWj9/p
>>18
オブジェクトの永続化について調べてみるといいかも。
PHPなんかでは、普通にセッションにオブジェクトを格納出来るよ。

22nobodyさん
垢版 |
03/11/27 08:17ID:0zBWj9/p
>>20
一連の処理をひとつのアプリケーションとし、
各処理をそのアプリケーションの状態とみなすと、
Stateパターンを適応できますね。perlのCGI::Application みたいに。

勿論、非オブジェクト指向でも同様の処理は可能です。
ハッシュ等にキーと処理へのポインタを登録し、
与えられたキーの処理を呼び出すといった方法で、冗長な分岐から解放されます。


ところで、ウェブプログラミングで*使える*(eq 有用な?)デザインパターンって、
例えばどんなの?
23nobodyさん
垢版 |
03/11/27 08:46ID:8RwaY1jw
Webプログラミングの場合、GUIより、モデルやコントローラ周りでの
プログラミングでデザインパターンを多用するケースが多い気が。

結城 浩著書の本は役立ってます。

24nobodyさん
垢版 |
03/11/27 11:23ID:lzQjXivq
>>19がなんでそんな必死になるのかわからんし
全然反論になってない
03/11/27 12:31ID:???
ごめん、クラスの組み合わせがデザインパターン?
つかデザインパターンを易しく説明きぼんぬ。まじで。
03/11/27 13:01ID:???
GOFならぐぐればいくらでもでてくる
03/11/27 13:58ID:???
Web Service なシステムを作る上でのデザインパターンなら考えられるかも
ConcreteStrategy を一個の CGI として実装して… うーいまいちメリットないな
03/11/27 14:15ID:???
フォームデータ処理
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とあんま変わらんな
03/11/27 16:50ID:???
MVCさいこー。
いや、本気で。
03/11/27 17:03ID:???
テンプレート使えばモデルとビューは分離できるな
31nobodyさん
垢版 |
03/11/27 22:02ID:0zBWj9/p
>>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);
}
}
32nobodyさん
垢版 |
03/11/27 22:15ID:0zBWj9/p
>> 23
アプリケーションサーバや、フレームワーク内でなら使われてる例は多いよね。GOFに限らず。

うーん、OOP/GOF な話題がメインなのかな、ここ?
WEBパターンとかの話題はスレor板違い?
http://www.c2.com/cgi/wiki?WebsitePatterns
03/11/27 22:29ID:???
>>31
非オブジェクト指向言語でオブジェクト指向ごっこしたら大体は破綻するけどね。

言語もパターンも使いよう。
あんたの実力はソースコードレビューではなく客先試験で発揮して下さいよって感じになりかねない。
03/11/27 23:54ID:???
25です。
>>31
ますます分からなくなりました。
これって特殊な例じゃない?
03/11/28 00:49ID:???
>>34
だからぐぐれよ
解説サイトいくらでもあるだろ
それか本かって読め
03/11/28 02:36ID:???
>>34
だからぐぐれよ
解説サイトいくらでもあるだろ
それか本かって読め      だってよ。(w
03/11/28 06:43ID:???
>>34
だからぐぐれよ
解説サイトいくらでもあるだろ
それか本かって読め      だってよ。(w      だってよ。(w
03/11/28 07:55ID:???
PEARのソースコードは
デザパの勉強なるよ
03/11/28 09:25ID:???
>>35-37みたいなのはプロトタイプパターンなのかな
03/11/28 10:57ID:???
いまだに(wとか使う奴いるんだな・・・
03/11/28 12:33ID:???
(w
42nobodyさん
垢版 |
03/11/28 17:57ID:9mFpNgVw
ごめん、混乱させるような事言っちゃたかな。>25
http://www.hyuki.com/dp/dpfaq.html DesignPatterns FAQ日本語訳

パターンとは、あるコンテキスト(状況・背景)上の問題に対する一つの解決策。

繰返し発生するコンテキストは、フォームデータ処理などで発生する if else の条件分岐 like >6 >28
問題は、条件分岐の文にbugが混入しやすい事
解決策の一つは、>22 冗長な分岐を排除する。
これなら、オブジェクト指向でなくとも、ハッシュの様なデータ構造さえ使えれば適用できるでしょう?

これだけでは不十分で、これ以外にもこのパターンはどう言った時に適用すると良いとか、
適用した場合にどういった状況になるか、他に考慮するべき事もパターンに記述されます。
詳しくはパターン・ランゲージについて調べてみて。

"パターン"が理解出来たら、デザインパターンはすぐ理解出来ると思う。でも
単純に、すべてのクラスの組合せがデザインパターンと呼ばれるわけではない。(FAQにもそう書かれている)
"パターン"として有益な情報に成り得るのは、特定の条件の元の問題に対して。

組合せを指して"パターン"と呼んでいるのではないので。
デザインパターンの考え方は、オブジェクト指向をサポートしていない言語にとっても有用だと思う。
別に非OOP言語でのOOを推奨しているわけではないよ。>18 >19 >24 に対するフォローのつもり。>32
03/11/28 19:07ID:???
コソーリとデザインパターンって何と聞いていいですか
03/11/29 13:48ID:???
>>38

phpにおいて、というならまぁそうなのかもな。
リファクタリングされてないようなのがいっぱいあるけど。

なんか重いし、無駄が多いし、好きになれない
03/11/29 21:36ID:???
>>44
>リファクタリングされてないようなのがいっぱいあるけど。

は再利用の際の技であり成果物にわざわざ適用しても仕方ないのでは?
03/11/29 22:56ID:???
>>44
実運用で使うようなモジュールはだいたい限られてるし、
そういうモジュールはよくメンテされてて
実用的で使えるのは結構あると思うけど。

ライブラリからリファクタリングしないと
重かったりして困るようなパフォーマンス命な
仕事なんてやったこと無いので
そういう時に使うべきかどうかというのは
判断が必要かもしれないけど


03/11/29 23:21ID:???
>>46
だな。
なんらかのライブラリ群や、フレームワークを使ったとき、
ハード資源消費量は、無駄な機能の占める割合が高かったりするもんな。
それでも、漏れらは使うのさ。
信頼性のあるライブラリだし、開発コストが下がるから。
客から動作がにぶくなってきたって、言われたら、
「分散しましょう!サバ増やしましょう!お任せ下さい!」ってな感じで対応。
宇摩ー。
レスを投稿する


ニューススポーツなんでも実況