ウェブプログラミングで使えるデザインパターン
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
非オブジェクト指向言語でオブジェクト指向ごっこしたら大体は破綻するけどね。
言語もパターンも使いよう。
あんたの実力はソースコードレビューではなく客先試験で発揮して下さいよって感じになりかねない。
非オブジェクト指向言語でオブジェクト指向ごっこしたら大体は破綻するけどね。
言語もパターンも使いよう。
あんたの実力はソースコードレビューではなく客先試験で発揮して下さいよって感じになりかねない。
38nobodyさん
03/11/28 07:55ID:??? PEARのソースコードは
デザパの勉強なるよ
デザパの勉強なるよ
40nobodyさん
03/11/28 10:57ID:??? いまだに(wとか使う奴いるんだな・・・
41nobodyさん
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
http://www.hyuki.com/dp/dpfaq.html DesignPatterns FAQ日本語訳
パターンとは、あるコンテキスト(状況・背景)上の問題に対する一つの解決策。
繰返し発生するコンテキストは、フォームデータ処理などで発生する if else の条件分岐 like >6 >28
問題は、条件分岐の文にbugが混入しやすい事
解決策の一つは、>22 冗長な分岐を排除する。
これなら、オブジェクト指向でなくとも、ハッシュの様なデータ構造さえ使えれば適用できるでしょう?
これだけでは不十分で、これ以外にもこのパターンはどう言った時に適用すると良いとか、
適用した場合にどういった状況になるか、他に考慮するべき事もパターンに記述されます。
詳しくはパターン・ランゲージについて調べてみて。
"パターン"が理解出来たら、デザインパターンはすぐ理解出来ると思う。でも
単純に、すべてのクラスの組合せがデザインパターンと呼ばれるわけではない。(FAQにもそう書かれている)
"パターン"として有益な情報に成り得るのは、特定の条件の元の問題に対して。
組合せを指して"パターン"と呼んでいるのではないので。
デザインパターンの考え方は、オブジェクト指向をサポートしていない言語にとっても有用だと思う。
別に非OOP言語でのOOを推奨しているわけではないよ。>18 >19 >24 に対するフォローのつもり。>32
43nobodyさん
03/11/28 19:07ID:??? コソーリとデザインパターンって何と聞いていいですか
44nobodyさん
03/11/29 13:48ID:???46nobodyさん
03/11/29 22:56ID:??? >>44
実運用で使うようなモジュールはだいたい限られてるし、
そういうモジュールはよくメンテされてて
実用的で使えるのは結構あると思うけど。
ライブラリからリファクタリングしないと
重かったりして困るようなパフォーマンス命な
仕事なんてやったこと無いので
そういう時に使うべきかどうかというのは
判断が必要かもしれないけど
実運用で使うようなモジュールはだいたい限られてるし、
そういうモジュールはよくメンテされてて
実用的で使えるのは結構あると思うけど。
ライブラリからリファクタリングしないと
重かったりして困るようなパフォーマンス命な
仕事なんてやったこと無いので
そういう時に使うべきかどうかというのは
判断が必要かもしれないけど
47nobodyさん
03/11/29 23:21ID:??? >>46
だな。
なんらかのライブラリ群や、フレームワークを使ったとき、
ハード資源消費量は、無駄な機能の占める割合が高かったりするもんな。
それでも、漏れらは使うのさ。
信頼性のあるライブラリだし、開発コストが下がるから。
客から動作がにぶくなってきたって、言われたら、
「分散しましょう!サバ増やしましょう!お任せ下さい!」ってな感じで対応。
宇摩ー。
だな。
なんらかのライブラリ群や、フレームワークを使ったとき、
ハード資源消費量は、無駄な機能の占める割合が高かったりするもんな。
それでも、漏れらは使うのさ。
信頼性のあるライブラリだし、開発コストが下がるから。
客から動作がにぶくなってきたって、言われたら、
「分散しましょう!サバ増やしましょう!お任せ下さい!」ってな感じで対応。
宇摩ー。
49nobodyさん
03/11/30 00:32ID:Fs/0s5IP >>31よりもっと使えるやつカモン
実際modeで分離なんて簡単にはいかない
実際modeで分離なんて簡単にはいかない
5046
03/11/30 00:35ID:???52nobodyさん
03/11/30 00:57ID:???55nobodyさん
03/11/30 01:49ID:ENFs/Hl757nobodyさん
03/11/30 02:35ID:ENFs/Hl760nobodyさん
03/11/30 10:01ID:??? 最近WebProg飽きたからやってないけど、昔はこんな感じに組んでたよ。
勝手にSDM-VCモデルとか呼んでたけど。
後から調べたら似たような思想の設計法とかやたらとあってちょっと欝。
S:ストレージ
ファイルとかDBとかを同じメソッドでアクセスできるようにするためのラッパクラス。
三層スキーマの内部スキーマ相当でODBCとかと似たような概念。
ここをモジュール化することで次回から使い回しが可能。
D:データ
ストレージに保存するエンティティ(データ)クラス。
同概念スキーマ相当。JDBC的な考え方。
Sを差し替えるだけで様々な媒体に永続化が可能なため移植が楽に。
M:モデル
言うまでもなく、MVCのM。
ビューに依存しないロジックを提供する。
VC:ビュー&コントローラ
リストボックスとか汎用的な部品だとVとCの分離には激しく意味があると思うが
オーダ特化のVはむしろCと一緒に管理した方が便利という判断でいっしょこたんに。
マンマシンインターフェースを担当する。
勝手にSDM-VCモデルとか呼んでたけど。
後から調べたら似たような思想の設計法とかやたらとあってちょっと欝。
S:ストレージ
ファイルとかDBとかを同じメソッドでアクセスできるようにするためのラッパクラス。
三層スキーマの内部スキーマ相当でODBCとかと似たような概念。
ここをモジュール化することで次回から使い回しが可能。
D:データ
ストレージに保存するエンティティ(データ)クラス。
同概念スキーマ相当。JDBC的な考え方。
Sを差し替えるだけで様々な媒体に永続化が可能なため移植が楽に。
M:モデル
言うまでもなく、MVCのM。
ビューに依存しないロジックを提供する。
VC:ビュー&コントローラ
リストボックスとか汎用的な部品だとVとCの分離には激しく意味があると思うが
オーダ特化のVはむしろCと一緒に管理した方が便利という判断でいっしょこたんに。
マンマシンインターフェースを担当する。
61nobodyさん
03/11/30 12:35ID:??? >>60 おれもそういう経験あるよ。
有名なモデリングパターンや、デザインパターンを知らかったとき、
もっと効率良く開発したいと心掛けながら、設計していたら、
結局有名なパターンと同じ方法で設計してた。
有名なモデリングパターンや、デザインパターンを知らかったとき、
もっと効率良く開発したいと心掛けながら、設計していたら、
結局有名なパターンと同じ方法で設計してた。
63nobodyさん
03/12/01 02:53ID:i/vnv4B8 >61
質問いいかな?
MVCとかってパターンランゲージの用語で言う「パターン」に含まれるの?
モデリング・パターンのパターンとか?MVCにもパターンの様なもの
(どういった時にMVCで設計するといい。とか)の記述がある?
自分のデザインパターンに対する認識が他の人とは違ってるよーな気がしてきた。
「パターン」のコンテキストやフォース(どういった時にそのパターンを適応するといい。
等といったパターンの目的や背景やその制約)の部分が抜けてる様な気がするんだけど。
質問いいかな?
MVCとかってパターンランゲージの用語で言う「パターン」に含まれるの?
モデリング・パターンのパターンとか?MVCにもパターンの様なもの
(どういった時にMVCで設計するといい。とか)の記述がある?
自分のデザインパターンに対する認識が他の人とは違ってるよーな気がしてきた。
「パターン」のコンテキストやフォース(どういった時にそのパターンを適応するといい。
等といったパターンの目的や背景やその制約)の部分が抜けてる様な気がするんだけど。
65nobodyさん
03/12/01 10:49ID:???66nobodyさん
03/12/01 11:09ID:??? 無駄が多いんだけならいいんだよ。その分汎用性が高くなってるわけだし。
でもダサいコードが多いじゃん。あれなら Perl で CPAN の方が(゚Д゚)ウマー
でもダサいコードが多いじゃん。あれなら Perl で CPAN の方が(゚Д゚)ウマー
67nobodyさん
03/12/01 13:06ID:??? >「パターン」のコンテキストやフォース(どういった時にそのパターンを適応するといい。
>等といったパターンの目的や背景やその制約)の部分が抜けてる様な気がするんだけど。
それは、多くの経験の集約から「このパターンはこのケースに使える」というのが出てくるのであって、
今は「こういうパターンがあるんじゃね?」って段階だろ。このスレ的には
>等といったパターンの目的や背景やその制約)の部分が抜けてる様な気がするんだけど。
それは、多くの経験の集約から「このパターンはこのケースに使える」というのが出てくるのであって、
今は「こういうパターンがあるんじゃね?」って段階だろ。このスレ的には
68nobodyさん
03/12/01 19:00ID:???72nobodyさん
03/12/02 06:46ID:??? リファクタリングって再利用しやすいようにメソッド名を適切に書き換えたりするくらいじゃないの?
ロジックを変更すればそれに影響するすべての部分に再試験が必要になるわけで
それって非常に効率が悪いわけで。
それをやらずにごにょごにょ言ってるなら非常に危険なソフトウェアがちまたにあふれることになるかと。
ロジックを変更すればそれに影響するすべての部分に再試験が必要になるわけで
それって非常に効率が悪いわけで。
それをやらずにごにょごにょ言ってるなら非常に危険なソフトウェアがちまたにあふれることになるかと。
73nobodyさん
03/12/02 08:27ID:1mz3fQJ8 >67
パターンランゲージってそういった経験を文書化するものじゃなかったっけ?
>PHP/DesignPattern
horde の人とかデザインパターンを結構意識して使っている様だよ。
PEARだったらLog関連のクラスがGoF適用例として参考になると思う。
パターンランゲージってそういった経験を文書化するものじゃなかったっけ?
>PHP/DesignPattern
horde の人とかデザインパターンを結構意識して使っている様だよ。
PEARだったらLog関連のクラスがGoF適用例として参考になると思う。
74nobodyさん
03/12/02 10:58ID:??? PEAR みたいなダサいもん、参考にすんなよ。
76nobodyさん
03/12/02 14:00ID:c/j/bWHB デザインパターンて何?
79nobodyさん
03/12/02 19:32ID:/3byaW6X デザイン≒設計
81nobodyさん
03/12/02 21:34ID:??? デザインパターン≒下絵
?→?→?
↓ ↑ ↑
?→?←?
?→?→?
↓ ↑ ↑
?→?←?
82nobodyさん
03/12/04 14:10ID:???83nobodyさん
03/12/05 00:56ID:??? おすすめの書籍を教えてよ。
リファクタリング+デザインパターンもの?
リファクタリング+デザインパターンもの?
84nobodyさん
03/12/05 22:40ID:???Java言語で学ぶデザインパターン入門
85nobodyさん
03/12/21 01:33ID:hM57n5k9 昔Observerを使ったMVCを知って、
『こりゃいいや!』ってWebプログラムで使おうとして
かえってごちゃごちゃになった。
『こりゃいいや!』ってWebプログラムで使おうとして
かえってごちゃごちゃになった。
86nobodyさん
03/12/21 01:36ID:hM57n5k9 あ、本題書き忘れた。
Compositeパターンはツリー型掲示板なんかにうってつけじゃないの?
Compositeパターンはツリー型掲示板なんかにうってつけじゃないの?
8885
03/12/21 13:13ID:??? >>87
ん?……あ、そうか。
スレッド(トピック?)の下にスレッドがあるような再起構造じゃないや。
でも、子記事を持つものをComposite、持たないものをLeafと見立てて
使えないかな?
それとも俺何か勘違いしてるかな?
ん?……あ、そうか。
スレッド(トピック?)の下にスレッドがあるような再起構造じゃないや。
でも、子記事を持つものをComposite、持たないものをLeafと見立てて
使えないかな?
それとも俺何か勘違いしてるかな?
89nobodyさん
03/12/21 15:35ID:??? >>87
木構造を表現するのに適切なデザインパターンだと思うけど?> Composite pattern
>>79,81
パターン言語には、その(solution)解法を適用する場合のコンテキスト
(背景・解決する問題の状況)や、force(制約・制限)等が書かれているはず。
更に言えば、具体的な事例や、そのパターンを適用した際に起こる副作用とかトレードオフ等、
こういった一連の状況を指してパターンと呼んでいるんじゃなかった?
solutionの部分だけを指してパターンと呼んでいる人が多い様に見受けられる。
FAQにもパターンという表現は誤解を招きやすい言葉だったって書かれているけどね。
だからと言って誤解されたままでは有益な議論は出来ないよ。
一言で説明するのは難しいかも知れないけど、設計と言い切ってしまうのはどうかな?と思う。
デザインパターン => オブジェクト指向での設計上の問題に対する解決策とそれに関する知見。
>>85
かえってごちゃごちゃになったのなら、どうしてそうなったのか考えてみよう?何か原因あるはずだよね?
ここで、パターン使ってこうなったからパターンは使えない、なんて短絡的な発想はせずに。
どうすれば、その問題をスマートに解決出来るんだろうと考えてみる。
例えば、Observerパターンで知られている問題点は、
Subjectが複数になった場合に保守や拡張が困難になる、その場合はSubjectに中間層を設けるなど。
パターンの説明には必ず関連するパターンへの参照や、例外/制限事項等が書かれているはずです。
クラス図だけ見真似てデザインパターンを使ったつもりに浸っていると、
パターン使った=>更に悪化 という*パターン(繰返しの意味で)*に陥りやすいです。
木構造を表現するのに適切なデザインパターンだと思うけど?> Composite pattern
>>79,81
パターン言語には、その(solution)解法を適用する場合のコンテキスト
(背景・解決する問題の状況)や、force(制約・制限)等が書かれているはず。
更に言えば、具体的な事例や、そのパターンを適用した際に起こる副作用とかトレードオフ等、
こういった一連の状況を指してパターンと呼んでいるんじゃなかった?
solutionの部分だけを指してパターンと呼んでいる人が多い様に見受けられる。
FAQにもパターンという表現は誤解を招きやすい言葉だったって書かれているけどね。
だからと言って誤解されたままでは有益な議論は出来ないよ。
一言で説明するのは難しいかも知れないけど、設計と言い切ってしまうのはどうかな?と思う。
デザインパターン => オブジェクト指向での設計上の問題に対する解決策とそれに関する知見。
>>85
かえってごちゃごちゃになったのなら、どうしてそうなったのか考えてみよう?何か原因あるはずだよね?
ここで、パターン使ってこうなったからパターンは使えない、なんて短絡的な発想はせずに。
どうすれば、その問題をスマートに解決出来るんだろうと考えてみる。
例えば、Observerパターンで知られている問題点は、
Subjectが複数になった場合に保守や拡張が困難になる、その場合はSubjectに中間層を設けるなど。
パターンの説明には必ず関連するパターンへの参照や、例外/制限事項等が書かれているはずです。
クラス図だけ見真似てデザインパターンを使ったつもりに浸っていると、
パターン使った=>更に悪化 という*パターン(繰返しの意味で)*に陥りやすいです。
91nobodyさん
03/12/21 15:55ID:??? 無理。
ジャンプ&フローで要約性がないパターン。
ジャンプ&フローで要約性がないパターン。
9385
03/12/21 17:14ID:???94nobodyさん
03/12/22 01:36ID:??? CGIはGoF的なデザインパターン使って作っても
オブジェクト生成して一回で捨てちゃうもんな
オブジェクト生成して一回で捨てちゃうもんな
96nobodyさん
03/12/22 07:37ID:???97nobodyさん
03/12/23 02:36ID:???99nobodyさん
03/12/26 13:59ID:5BZ0FoxA >>96
ファイル周りで、こういう処理にはこういうパターンがいいよ、みたいのある?
趣味でCGIスクリプト作ってるけど結局ファイル入出力が処理の中心で、
ここをシンプルに書ければだいぶ綺麗になるんだけどなぁ。
ファイル周りで、こういう処理にはこういうパターンがいいよ、みたいのある?
趣味でCGIスクリプト作ってるけど結局ファイル入出力が処理の中心で、
ここをシンプルに書ければだいぶ綺麗になるんだけどなぁ。
101nobodyさん
03/12/26 23:57ID:??? だれか
>ファイルとかDBとかを同じメソッドで
>アクセスできるようにするためのラッパクラス。
これ作ってください。
>ファイルとかDBとかを同じメソッドで
>アクセスできるようにするためのラッパクラス。
これ作ってください。
レスを投稿する