ウェブプログラミングで使えるデザインパターン
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);
}
}
レスを投稿する
ニュース
- 【速報】米大統領、中国を「同盟国」と異例の言及 [蚤の市★]
- 第2次大戦に触れトランプ氏「米中は同盟国」、当時は中華民国…「抗日」巡る中国の言説補強する恐れ [蚤の市★]
- 「台湾問題慎重に取り扱うように」と習氏が発言 米中首脳会談 [蚤の市★]
- トヨタの次世代EV、主要部品は中国メーカー 現地日本勢の失注相次ぐ [蚤の市★]
- 阪神・西勇輝が今季限りで現役引退 35歳の決断 通算127勝、駆け抜けた18年間「みんないい思い出」菰野からドラフト3位でオリックス入団 [征夷大将軍★]
- サッカー最新FIFAランキング1位〜100位。北中米ワールドカップ出場国、サッカー日本代表の順位は?(2026年9月25日付) [征夷大将軍★]
- 中国、10年以内に経済が崩壊して内戦に突入 ソースは愛国動画 [931948549]
- 【高市悲報】トランプ「中国は同盟国」 [834922174]
- なんか勘違いしたのかsageでレスしてる新参のガイジおるね
- 【高市悲報】NHK、一般人への石破に関するインタビューとして石破茂へのネガティブな報道のため統一教会🏺の役者を使っていた [165981677]
- 40~50代の貯蓄平均額「1500万円」。お前ら貯めてるか? [153490809]
- 【画像】日本さん、高市のせいで貧しくなってしまうwwwwwwwwwwwwwwwwwwww