ウェブプログラミングで使えるデザインパターン
1nobodyさん
03/11/22 06:56ID:Lh+gL3bz ゲッチューポン
03/11/22 22:25ID:???
こんなスレはシングルトンであって欲しいものだ。
4nobodyさん
03/11/22 22:44ID:LH4aw5t2 とにかくリクエストとレスポンスが一組になる
1パターンリクエストに対し数パターンのレスポンスがあって、他パターンのリクエストと共通だったりする
1パターンリクエストに対し数パターンのレスポンスがあって、他パターンのリクエストと共通だったりする
03/11/23 19:42ID:???
サーブレットは知らんがCGI、PHPあたりだとだいたい
フォームデータ処理
if
エラー表示1
else if
エラー表示2
・・・
else if
処理1
フェーズ1表示
else if
処理2
フェーズ2表示
・・・・
って感じになるな
フォームデータ処理
if
エラー表示1
else if
エラー表示2
・・・
else if
処理1
フェーズ1表示
else if
処理2
フェーズ2表示
・・・・
って感じになるな
03/11/24 15:47ID:???
ここでいうデザインパターンってなんですか?
10nobodyさん
03/11/24 23:53ID:6o1aVvpy GoFに限定しないオブジェクト指向にも限定しない
寧ろウェブプログラミングのためのパターン
寧ろウェブプログラミングのためのパターン
11nobodyさん
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
Stateパターンでログイン・ユーザの認証状態を管理する。etc
コーディングに特化しない話題でもいいなら、
WEB関連&&デザインパターンという事で、こんなサイトも。
http://www.designpattern.lu.unisi.ch/index.htm
13nobodyさん
03/11/26 13:08ID:??? まずはPerl5やPHPにGoFを翻訳することからはじめるか
Perl5やPHPって継承やインターフェース使えたっけ?
Perl5やPHPって継承やインターフェース使えたっけ?
14nobodyさん
03/11/26 16:20ID:??? http://www.pat.hi-ho.ne.jp/dimension/sample/sample_class_list.shtml
のサイトでもPHPでデザパタしてる。
プログラム板にも初心者向けのデザパタスレがあるから、
デザインパターンって何?って人はそちらも合わせて見るといいかと。
のサイトでもPHPでデザパタしてる。
プログラム板にも初心者向けのデザパタスレがあるから、
デザインパターンって何?って人はそちらも合わせて見るといいかと。
15nobodyさん
03/11/27 00:07ID:0zBWj9/p >>13
GOFの実装例なら、すでに幾つかありますね。
http://www.perldesignpatterns.com/
Perl5 や PHP4 にはインターフェースのための構文は用意されていないので、
(標準では)Javaみたいにインターフェースで定義したメソッドの実装を強制する事は出来ません。
多くのサンプルでは、インターフェース代わりに空メソッドを定義しているだけか、
実行時にメソッドが実装されていなければ終了する。と、いったものが殆んどの様です。
インターフェースを継承したクラスがそのメソッドを実装しているか確認したいのであれば。
perlについては、CPANにコンパイル時にインターフェースをチェックするモジュールがあります。
PHPでは、PHP5からインターフェースが導入されています。
GOFの実装例なら、すでに幾つかありますね。
http://www.perldesignpatterns.com/
Perl5 や PHP4 にはインターフェースのための構文は用意されていないので、
(標準では)Javaみたいにインターフェースで定義したメソッドの実装を強制する事は出来ません。
多くのサンプルでは、インターフェース代わりに空メソッドを定義しているだけか、
実行時にメソッドが実装されていなければ終了する。と、いったものが殆んどの様です。
インターフェースを継承したクラスがそのメソッドを実装しているか確認したいのであれば。
perlについては、CPANにコンパイル時にインターフェースをチェックするモジュールがあります。
PHPでは、PHP5からインターフェースが導入されています。
16nobodyさん
03/11/27 00:41ID:??? ごめん、インターフェースって何?継承とは違うのかい?
17nobodyさん
03/11/27 02:07ID:??? インターフェースは知らんけど継承はわかるのか?
なんじゃそりゃ
なんじゃそりゃ
18nobodyさん
03/11/27 02:15ID:??? ウェブプログラミングじゃあんまGoF通用しないんじゃね?
Perl PHP Rubyじゃインターフェース無いし、GUIもHTML吐いて作るわけだし、
インスタンスを次のセッションで使うのもしんどいじゃん
Perl PHP Rubyじゃインターフェース無いし、GUIもHTML吐いて作るわけだし、
インスタンスを次のセッションで使うのもしんどいじゃん
19nobodyさん
03/11/27 06:30ID:??? >>18
>Perl PHP Rubyじゃインターフェース無いし
プロトタイプベースだからいらんでしょ。アホか。
>GUIもHTML吐いて作るわけだし、
むしろその辺のGUI部品より融通が利くわけだが。
後、J2EEとかASP.NETはWebプログラミングに入らないんですか?
完全無料主義者のあなたの中では。
>Perl PHP Rubyじゃインターフェース無いし
プロトタイプベースだからいらんでしょ。アホか。
>GUIもHTML吐いて作るわけだし、
むしろその辺のGUI部品より融通が利くわけだが。
後、J2EEとかASP.NETはWebプログラミングに入らないんですか?
完全無料主義者のあなたの中では。
21nobodyさん
03/11/27 07:31ID:0zBWj9/p22nobodyさん
03/11/27 08:17ID:0zBWj9/p >>20
一連の処理をひとつのアプリケーションとし、
各処理をそのアプリケーションの状態とみなすと、
Stateパターンを適応できますね。perlのCGI::Application みたいに。
勿論、非オブジェクト指向でも同様の処理は可能です。
ハッシュ等にキーと処理へのポインタを登録し、
与えられたキーの処理を呼び出すといった方法で、冗長な分岐から解放されます。
ところで、ウェブプログラミングで*使える*(eq 有用な?)デザインパターンって、
例えばどんなの?
一連の処理をひとつのアプリケーションとし、
各処理をそのアプリケーションの状態とみなすと、
Stateパターンを適応できますね。perlのCGI::Application みたいに。
勿論、非オブジェクト指向でも同様の処理は可能です。
ハッシュ等にキーと処理へのポインタを登録し、
与えられたキーの処理を呼び出すといった方法で、冗長な分岐から解放されます。
ところで、ウェブプログラミングで*使える*(eq 有用な?)デザインパターンって、
例えばどんなの?
23nobodyさん
03/11/27 08:46ID:8RwaY1jw Webプログラミングの場合、GUIより、モデルやコントローラ周りでの
プログラミングでデザインパターンを多用するケースが多い気が。
結城 浩著書の本は役立ってます。
プログラミングでデザインパターンを多用するケースが多い気が。
結城 浩著書の本は役立ってます。
24nobodyさん
03/11/27 11:23ID:lzQjXivq >>19がなんでそんな必死になるのかわからんし
全然反論になってない
全然反論になってない
25nobodyさん
03/11/27 12:31ID:??? ごめん、クラスの組み合わせがデザインパターン?
つかデザインパターンを易しく説明きぼんぬ。まじで。
つかデザインパターンを易しく説明きぼんぬ。まじで。
26nobodyさん
03/11/27 13:01ID:??? GOFならぐぐればいくらでもでてくる
27nobodyさん
03/11/27 13:58ID:??? Web Service なシステムを作る上でのデザインパターンなら考えられるかも
ConcreteStrategy を一個の CGI として実装して… うーいまいちメリットないな
ConcreteStrategy を一個の CGI として実装して… うーいまいちメリットないな
28nobodyさん
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とあんま変わらんな
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とあんま変わらんな
29nobodyさん
03/11/27 16:50ID:??? MVCさいこー。
いや、本気で。
いや、本気で。
30nobodyさん
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);
}
}
オブジェクト指向にクラスが必須ではないのと同じくらい、
デザインパターンにオブジェクト指向が必須という訳ではないと思う。(私見)
オブジェクト指向以外でも応用することが出来ます。
>>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
アプリケーションサーバや、フレームワーク内でなら使われてる例は多いよね。GOFに限らず。
うーん、OOP/GOF な話題がメインなのかな、ここ?
WEBパターンとかの話題はスレor板違い?
http://www.c2.com/cgi/wiki?WebsitePatterns
33nobodyさん
03/11/27 22:29ID:??? >>31
非オブジェクト指向言語でオブジェクト指向ごっこしたら大体は破綻するけどね。
言語もパターンも使いよう。
あんたの実力はソースコードレビューではなく客先試験で発揮して下さいよって感じになりかねない。
非オブジェクト指向言語でオブジェクト指向ごっこしたら大体は破綻するけどね。
言語もパターンも使いよう。
あんたの実力はソースコードレビューではなく客先試験で発揮して下さいよって感じになりかねない。
レスを投稿する
ニュース
- 【アジア大会】卓球男子団体が60年ぶり金!ついに中国倒した 崖っ縁から張本&松島が連勝 3時間超熱闘 [征夷大将軍★]
- 「パキスタン人をこの国から追い出してやろうと」モスクなどに放火を認める 北海道江別市の37歳男に拘禁刑9年を求刑 [煮卵★]
- 富士山閉山期、登山届出さず救助→上限5万円の過料 静岡で来期から [少考さん★]
- 【サッカー】日本代表、松木玖生が先発A代表デビュー!! ウルグアイ戦スタメン発表、鈴木唯人・佐野航大も抜擢【フジテレビ】 [阿弥陀ヶ峰★]
- 『美味しんぼ』34年ぶり新作アニメ 山岡士郎役は阿座上洋平、栗田ゆう子役は咲々木瞳、海原雄山役は大塚明夫が父・周夫氏から引き継ぐ [muffin★]
- 【千葉】養鰻場が浸水 ウナギ5万匹流される「どこかで生き延びて」 印旛沼の堤防決壊 [ぐれ★]
- 【地上波/Tver】国際親善試合・日本 vs ウルグアイ 【キリンチャレンジカップ2026】★5
- とらせん ★4
- 【地上波/Tver】国際親善試合・日本 vs ウルグアイ ★1【キリンチャレンジカップ2028】
- こいせん3 全レス転載禁止
- ハム専3
- 巨専】 ★5
- 【実況】えちえちアソビ★まわり隊!熱千めら・宙科そぴあデビュー配信🧯📡 ★3
- 【実況】えちえちアソビ★まわり隊!熱千めら・宙科そぴあデビュー配信🧯📡 ★2
- 【実況】えちえちアソビ★まわり隊!熱千めら・宙科そぴあデビュー配信🧯📡 ★4
- 🏡会社の人間全員死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね🏡
- 【高市悲報】スマホの通信内容を「遠隔解析(盗聴)」できるように法改正へwwwwwwwwwwwwwwwwwwwwwww [817260143]
- 【高市悲報】ちば豪雨、印旛沼の堤防決壊3ヶ所に増える!うなぎ5万匹、鯉10万匹逃げる。県内の停電1.2万戸まで減少 [219241683]