オブジェクト指向システムの設計 174 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/09/26(火) 07:20:38.98ID:qu+DPehL
前スレ
オブジェクト指向システムの設計 172
http://mevius.2ch.net/test/read.cgi/tech/1467992113
オブジェクト指向システムの設計 173
http://mevius.2ch.net/test/read.cgi/tech/1502182334/

類似スレ
手続き型システムの設計 1
http://mevius.2ch.net/test/read.cgi/tech/1500282714
2017/10/01(日) 00:59:36.43ID:H5Asg8Dc
設計とはかならず「何のために」そういう設計をするのかという
目的が有る。それがデザパタの使用例や応用例なんだよ。

継承は「何のために」ではなく実現技術

だから継承といっただけでは何をしたいのか全くわからない。
だからデザインパターンで定義されている名前が必要
2017/10/01(日) 01:01:17.79ID:44WxUqLn
が、まあ、これらは通常は区別されているから、以下としよう。
・メソの継承の正しい使用例は常にストパタになる
・メソ/フィー等全てについて(将来的にも)全くoverrideしない場合は継承する意味がない
これでいいか?
2017/10/01(日) 01:02:05.70ID:H5Asg8Dc
> ・メソッドの継承の正しい使用例は常にストラテジーパターンになる

ならないって何度も言ってるんだがw

> ・メソッド/フィールド等全てについて(将来的にも)全くoverrideしない場合は継承する意味がない

意味はある。その例も出した。
2017/10/01(日) 01:03:39.76ID:GRIqwmf+
>>122
おれはRuby使いではないからチラ見ではよく分からんが、
見る限りrescueの仕様によるものであって、
Exceptionは派生しまくってるし、特に変だとも思わないが。
2017/10/01(日) 01:05:28.40ID:H5Asg8Dc
>>130
メソッド/フィールド等全てについて(将来的にも)全くoverrideしない
継承の正しい使い方だって言ってる
2017/10/01(日) 01:05:32.81ID:GRIqwmf+
>>129
とりあえずID見る癖付けろ。
俺のレスは粘着により複製されてるから。
2017/10/01(日) 01:07:40.92ID:GRIqwmf+
>>126
> どんな設計を見た所で、その実装が継承使っていれば、
> これは継承と呼ぶべきだーって叫ぶつもりだろ?
そりゃそうだろ。
お前は継承使ってても「これは継承ではない!」というのか?
2017/10/01(日) 01:09:09.45ID:GRIqwmf+
>>131
いや派生しまくってんだから、既にoverrideされまくっているはずだが。
2017/10/01(日) 01:10:27.50ID:H5Asg8Dc
>>133
> お前は継承使ってても「これは継承ではない!」というのか?

いや? 継承使っていてもストラテジーバターンでなければ
ストラテジーパターンではないと言うつもりだよ?

お前はストラテジーバターン=継承と呼ぶべきだって言ってるんだから、
お前はストラテジーパターンでないパターンを見ても、
ストラテジーバターン(=継承)だって言うんでしょ?

っていう話をしてるんだが?
2017/10/01(日) 01:11:52.96ID:44WxUqLn
>>132
あんたが表現のロジックを統一しないから代弁してやってんだよ
2017/10/01(日) 01:12:07.31ID:H5Asg8Dc
>>134
え? なに?

世界中の何処かで誰かがオーバーライドしていれば
それは継承使っていいって言ってるわけ?

その理屈だと継承が適切じゃないものなんてないだろうな。
世界中の何処かで誰かはオーバーライドしてるだろうさ
たとえそれが便利関数であったとしても
2017/10/01(日) 01:14:01.94ID:GRIqwmf+
>>135
> お前はストラテジーバターン=継承と呼ぶべきだって言ってるんだから、
そうとは言ってない。俺は、
・(正しい用法で)メソッドを継承した場合、ストラテジーパターンは自動的に適用されるから、
わざわざ「ストラテジーパターン(キリッツ」なんて言う機会も意味もない
という立場だ。
抽象度は違うが、分離不可能だし、分離する意味もないから通常は「継承」という言葉が使われる、ということ。
2017/10/01(日) 01:15:16.80ID:44WxUqLn
>>135
> お前はストラテジーバターン=継承と呼ぶべきだって言ってるんだから、
そうとは言ってない。俺は、
・(正しい用法で)メソを継承した場合、ストパタは自動的に適用されるから、
わざわざ「ストパタ(キリッツ」なんて言う機会も意味もない
という立場だ。
抽象度は違うが、分離不可能だし、分離する意味もないから通常は「継承」という言葉が使われる、ということ。
2017/10/01(日) 01:18:01.30ID:GRIqwmf+
>>137
意味不明。

RubyのExceptionは派生しまくっている=メソッド/フィールド等が既に追加/上書きされているはずであり、
これは正しい継承の使い方である、ということ。
2017/10/01(日) 01:19:25.82ID:H5Asg8Dc
>>138
> ・(正しい用法で)メソッドを継承した場合、ストラテジーパターンは自動的に適用されるから、
されない。

されると思っているのはお前がストラテジーバターン(設計用語)を
勝手に継承(実装用語)と読んでいるから、

何度も言うが設計は使用例(応用例)、つまり目的が有る
「アルゴリズムを実行時に選択することができる」
という目的があってこそストラテジーバターンと呼ぶことができるのであって
この目的がなければ、継承を使っていたからと言ってストラテジーバターンにはならない

設計用語を使わないからお前は「継承を使っているものはすべて継承だー!」という
意味不明なことをいうつもりだろって言ってんの。

設計用語を使っていれば「継承を使っているものはすべてストラテジーバターンだー!」
という事になって言葉的には意味不明なことにはならない。
もちろんこれが間違っているのは先に言ったとおり。

設計能力が足りないよ?
2017/10/01(日) 01:20:27.48ID:H5Asg8Dc
>>140
> RubyのExceptionは派生しまくっている=メソッド/フィールド等が既に追加/上書きされているはずであり、
いや上書きされてない。
上書きする必要ようもないしな。
2017/10/01(日) 01:25:04.92ID:GRIqwmf+
>>142
メンバは追加されてるだろ。(多分)
全く同じで階層だけ与えてエントリポイントをずらしているのか?
走だとしたらかなり奇妙な使い方だとは思うが。
2017/10/01(日) 01:26:45.20ID:44WxUqLn
>>142
メンバは追加されてるだろ。(多分)
全く同じで階層だけ与えてエンポイをずらしているのか?
走だとしたらかなり奇妙な使い方だとは思うが。
2017/10/01(日) 01:30:18.31ID:H5Asg8Dc
>>143
> メンバは追加されてるだろ。(多分)
オーバーライドの話だっただろ。アホめw


例外クラスは、クラスの階層構造を表現するのに
継承が適切だから継承を使ってる。
すべてのErrorはExceptioであり、実行時に発生するのは
StandardErrorであり、ファイルIOに関するエラーはIOErrorである
という風にだ。

これは設計として正しい。

オーバーライドするかどうかは些細な問題にすぎない。
重要なのは各クラスにどういう関係があって(これが設計)
それをどう言語で表現するか(これが実装)だ


お前がずっとやってるのは、実装だけしか見てないってことだよ。
2017/10/01(日) 01:30:53.56ID:GRIqwmf+
>>141
言いたいことは分かるが、平行線だな。
2017/10/01(日) 01:32:35.82ID:H5Asg8Dc
>>146
お前は言いたいことがわかる(俺が言ってることを理解した)
俺はお前が言いたいことがわからない

平行線ではない
2017/10/01(日) 01:34:40.94ID:GRIqwmf+
>>145
それも既に書いたけどね。
>>124読め。

とはいえ平行線ならそれでいい。
2017/10/01(日) 01:36:17.23ID:H5Asg8Dc
>>146
すべてはお前が

ストラテジーバターンは継承を使ってるから
設計用語ではなく実装用語の継承と呼びましょう

そうするとストラテジーバターンなんて用語はいらないですよね?
ってことはデザパタ用語は全ていらないんじゃないですか?

使う目的なんか気にせず、実装に継承を使っていれば
全部継承と呼びましょうよ

だからデザパタは意味がない。ゴミ


というばーかな。理屈を言い出したのが悪い。
2017/10/01(日) 01:36:22.99ID:GRIqwmf+
>>147
> 俺はお前が言いたいことがわからない
じゃあ全部読み直せ。
それで分からないのなら、俺かお前の日本語が駄目駄目なだけであり、
どちらにしてもこれ以上は無理だ。
2017/10/01(日) 01:36:32.17ID:44WxUqLn
>>145
それも既に書いたけどね。
>>128読め。

とはいえ平行線ならそれでいい。
2017/10/01(日) 01:38:16.54ID:H5Asg8Dc
>>150
お前の日本語がダメダメだってことだろw

お前はコンテキストを理解してない。
設計の話をしている時に実装の話をすんな
2017/10/01(日) 01:40:22.72ID:H5Asg8Dc
使う目的が違うのに、実装に継承が使われているだけで
全部継承と呼ぶな。それは実装用語だ

ストラテジーバターンの目的として使ってない時に

ストラテジーバターンは継承♪
継承を使っていればストラテジーバターン♪
だから全部ストラテジーバターン♪

とか言い出すなボケ

ストラテジーとは別のバターンとして使っているときは
実装に継承が含まれていようが別のパターンだ
2017/10/01(日) 01:42:14.15ID:GRIqwmf+
>>149
>>66,79,84読め
現実的に使えないから使われてないのだと思うぞ。
これも平行線ならそれでいいが。

>>153
そんなことは言ってないんだが、そう読めたのならそれでいい。
2017/10/01(日) 01:43:39.80ID:H5Asg8Dc
> 現実的に使えないから使われてないのだと思うぞ。

現実的に使われてるから、使われてるとしか言いようがない
2017/10/01(日) 01:44:39.83ID:44WxUqLn
>>154
ストラテジーパターンって何?
ストパタのこと?
2017/10/01(日) 01:45:19.08ID:H5Asg8Dc
例えば、Railsのモデルに使われているActiveRecordというのは
もともとPoEAAのActiveRecordパターンという
パターンを実装したものだ

あまりにもRailsが有名になりすぎてRailsのものだと
勘違いしている人がいるぐらいにな。

これだけでも有名で大規模な利用例と言えよう
2017/10/01(日) 01:46:37.91ID:GRIqwmf+
>>155
> 現実的に使われてるから、使われてるとしか言いようがない
これって前から聞いてるけど、お前のリアルなの?
2017/10/01(日) 01:49:44.09ID:H5Asg8Dc
>>158
あぁ、レスが遅かったな。
すでにデザインパターンが使われてる例を一つ出したところだ


デザインパターンが使われていない証拠を出せ
デザインパターンが使われている証拠を出せ

これは

幽霊がいないという証拠を出せ
幽霊がいるという証拠を出せ

という話と似ている。幽霊がいないことを証明するのは難しいが
幽霊がいるという証明をするのは簡単
一匹でも幽霊を見つけてくればいい。

だから俺はデザインパターンが使われてる例を一つ出した。
お前は難しい方から攻めてくれ。デザインパターンが使われていないという証明をしろ。
2017/10/01(日) 01:52:23.50ID:GRIqwmf+
>>157,159
そうだとしてさ、その場合、
「AcriveRecordオブジェクトを継承しといてね」とは言うけど、
「AcriveRecordパターン使ってね」とは言わないだろ、普通。
2017/10/01(日) 01:56:02.10ID:44WxUqLn
#define パターン パタ
#define デザインパターン デザパタ
#define ストラテジーパターン ストパタ
#define メソッド メソ
#define フィールド フィー
これでだいぶコード量が小さくできる

他に入れとくべきものある?
2017/10/01(日) 01:56:44.56ID:H5Asg8Dc
>>160
だからお前は実装のことしか見れてないっていってんだよww
視野が狭すぎ

「AcriveRecordオブジェクトを継承しといてね」は実装の話だ

「AcriveRecordパターン使ってね」は設計の話だ。
(実際には誰かに頼まれて使ったのではなくRailsの生みの親のDHHが
考慮した結果AcriveRecordパターンを使っわけだが)

お前は設計がすんだあとの立場からしか見えてないんだよ。
お前の書き込み自体が「○○しといてね」と指示を出される側から見てるのがその証拠
お前は誰かがやった設計の通りに、実装することしかしたことがないんだろ?
2017/10/01(日) 02:01:22.65ID:44WxUqLn
実装は思想やモデル、指針を定義するパターンを実現する手法のひとつにすぎない
それだけのことだよね
2017/10/01(日) 02:03:57.54ID:GRIqwmf+
>>162
いや、指示を出す立場でも同じ言葉だと思うが。

よく知らないが、
> ActiveRecordのようなO/Rマッパーを使うと、
> オブジェクト指向プログラミングができるのはもちろん、
> モデル層の永続化のコードを基本的にライブラリ任せにできるので、
> SQLを記述する煩わしさを避けることができます。
> http://www.atmarkit.co.jp/ait/articles/1104/12/news135.html
つまり俺なら普通に「O/Rマッパー」って言うぞ。
それを厨二に「ActiveRecord(キリッ」と名付けるのは勝手だが、
何故俺がいちいち名前を覚えないといけないのだ?
2017/10/01(日) 02:05:21.68ID:44WxUqLn
>>164
ソフトウェア設計者ならパターンくらい覚えるものだろう
仕様書を元に実装するコーダーなら別だが
2017/10/01(日) 02:08:23.29ID:GRIqwmf+
>>165
むしろ覚えるべきは「O/Rマッパー」(一般用語)であって、
「ActiveRecord」(Rails方言)ではないだろ。
2017/10/01(日) 02:08:24.39ID:H5Asg8Dc
普通、設計は「○○パターンを使ってね」なんて言わないからなぁ。

言うとしたら「○○パターンを使いましょう」だ
なにもない所から使うパターンを考えることが設計作業なんだから。

設計者が実装者に指示を出すとしたら
「○○パターンを使いますから、必要なクラスを実装してください」か
もしくは「○○パターンを使います。そのために必要なクラスの一部を作りましたから、
あなたは○○オブジェクトを継承しといてね」になるだろう。

そう実装の話。実装の立場からしか物事を見れてないから
設計をすることの意味すらもわからず
設計に実装と同じような指示が存在すると墓穴をほってしまう。
2017/10/01(日) 02:09:16.78ID:H5Asg8Dc
>>166
O/RマッパーとActiveRecordは同じ意味ではない。
まずそこから勉強することが大事だよな?
2017/10/01(日) 02:11:38.94ID:44WxUqLn
>>166
Active Recordというワードで鬼の首取るしかなくなってるように見える
議論の本質はそこではないともうひと方は言っていることがはたから見てても汲み取れる
2017/10/01(日) 02:12:56.51ID:H5Asg8Dc
まあ、ご教授してさしあげると(笑)

O/Rマッパーは設計を意味する用語ではない
なにかのオブジェクトとデータベースをマッピングする
という目的のためにライブラリ・フレムワークの種類のことだ。

O/Rマッパーと言ってもそこにどんな設計が使われているかはわからない。
ActiveRecordパターンを使ってるかもしれないし
Table Data Gatewayパターンを使ってるかもしれないし
Row Data Gatewayパターンを使ってるかもしれないし
Data Mapperパターンを使ってるかもしれない
2017/10/01(日) 02:14:56.98ID:H5Asg8Dc
RailsのActiveRecordは
その名前の通りPoEAAのActiveRecordパターンを
実装したO/Rマッパーである

別にO/Rマッパー全てがActiveRecordパターンというわけではない
2017/10/01(日) 02:15:32.16ID:GRIqwmf+
>>168
はいはい、「O/Rマッパー」と「ActiveRecord『パターン』」な。
つかこの辺は普通に脳内補完しろよマジで。

>>167
それ前から疑問で何度も聞いているのだが、お前のリアルでは
> 「○○パターンを使いましょう」
と言っているのか?

これも何度も言っているが、ストラテジーパターンに該当するとして、
その際、継承/委譲/関数ポインタのどれにするかで大違いなので、
現実的に「ストラテジーパターンで行きましょう」なんて議論は無理で、
「ここは委譲にしとく?」みたいなことにならないか?
2017/10/01(日) 02:16:17.79ID:44WxUqLn
まとめると、基本設計(パターン)とそれを実現するために使う道具(ライブラリ等の具体的な実装)の区別をちゃんとつけて設計しましょう
ってことでFA?
2017/10/01(日) 02:17:03.31ID:H5Asg8Dc
Java の Hibernate という O/Rマッパーが
Data Mapperパターンを使っている

http://d.hatena.ne.jp/naoya/20051024/1130146687

> テーブルの構造とクラスの設計に乖離がある場合、
> その乖離を埋めるためのマッピングを用意してやる必要がある、
> これが Data Mapper パターン。Java の Hibernate とかが
> Data Mapper による O/R マッピング実装。
2017/10/01(日) 02:18:34.76ID:H5Asg8Dc
>>172
O/Rマッパーの実装として

ActiveRecordパターンを使ったRailsのActiveRecordと
DataMapperパターンを使ったJavaのHibernateを紹介した


ここからもO/Rマッパーという用語では
設計がわからんという話に納得できただろ?w
2017/10/01(日) 02:18:59.84ID:GRIqwmf+
>>170,171
それくらいは分かるが、と言うより、

・O/Rマッパー=OとRをマッピングするもの

であって、それ以上でも以下でもないんだよ。
ただし、中身の実装を知らなくていいというのがOOPであって、それで終わり。
2017/10/01(日) 02:20:16.08ID:H5Asg8Dc
> ただし、中身の実装を知らなくていいというのがOOPであって、それで終わり。

ア、ハイ、実装者側の立場からしか見えてないんですよね?w


中身の設計ぐらい知らなきゃw
2017/10/01(日) 02:21:21.14ID:44WxUqLn
少しずつ主張を変えていって最初からそう言ってるんだがってことにする論法って俗に何て言うの?
2017/10/01(日) 02:21:59.93ID:H5Asg8Dc
ちょっとまてw
終わった話を蒸し返す論法も使ってるぞw
2017/10/01(日) 02:26:02.99ID:GRIqwmf+
>>174
そのURL読んだけど、それって多分単純にその実装をそう呼んだだけであって、
いわゆるデザパタ(GoF)とはだいぶ主旨が異なるぞ。
まあそれを有り難がるのも自由だが。
2017/10/01(日) 02:28:09.18ID:H5Asg8Dc
実装者は使うライブラリ・フレームワークの設計をしらないと
めちゃくちゃになるからな。

例えば昔、トランザクションスクリプトパターンと
単なるSQLライブラリばかり使ってきた人が
別プロジェクトでPythonのDjango(これもActiveRecordパターン)を
使ったんだが散々な結果だったよ。

フレームワークとしてActiveRecordパターンを要求されるが
そこにActiveRecordパターンではやらないようなコード
(SQLを実行するだけのようなメソッド)をクラスに生やしたりして。

Djangoフレームワークの実装の中身は見なくてもいいけど
そこで使われている設計はちゃんと理解していなければダメだ。
2017/10/01(日) 02:28:25.53ID:44WxUqLn
あるOOPベースのライブラリを使うことで結果的にあるデザインパターンに沿うことになるライブラリと、いろんなデザインパターンを実現するのに使えるより純粋な道具としてのライブラリがあると思うの
そこはちゃんと分離して話をしないとダメだと思うの
2017/10/01(日) 02:28:51.27ID:H5Asg8Dc
>>180
お前(今までの流れから明らかに力不足)の
感想なんていらんがなw
2017/10/01(日) 02:30:10.95ID:GRIqwmf+
一応俺のスタンスは最初から変わってないつもりだぞ。
・デザパタはゴミ
・デザパタ厨もゴミ
・デザパタ用語は使い道がないからゴミ
2017/10/01(日) 02:31:34.05ID:44WxUqLn
>>184
そうだろうね
そしてそれはソフトウェア設計者としては二流以下だというのがこれまでの話の流れだと思うの
2017/10/01(日) 02:31:45.57ID:H5Asg8Dc
>>184
もう一つ。

・俺は無能なバカ

これも加えとけw
今までの流れで明らかになったしな
2017/10/01(日) 02:32:31.62ID:GRIqwmf+
>>181
それはある。
しかしそれは「フレームワークの中身を知っておけ」であって、「デザパタを知っておけ」ではない。
2017/10/01(日) 02:34:18.00ID:44WxUqLn
>>186
というより
・俺はデザインパターンとかめんどくさいから勉強したくないの
だと思う
2017/10/01(日) 02:35:51.52ID:GRIqwmf+
>>182
一応それは世間的には区別されているらしいぞ。(wikiだと思ったが、今探したがない)
・自分が思うように使うのがライブラリ
・フレームワークの場合は、自分が合わせる
2017/10/01(日) 02:36:36.93ID:H5Asg8Dc
>>187
> しかしそれは「フレームワークの中身を知っておけ」であって、「デザパタを知っておけ」ではない。

「フレームワークで使われてるデザパタを知っておけ」だ

俺はDjangoは当時知らなかったがActiveRecordパターンを知っていたから
使い方が間違っていることにすぐに気づいたぞ
特定のフレームワークに縛られない知識が重要という話だ。


あくまで実装者として立場からしか見れないお前は
今使ってるフレームワークの使い方で精一杯なんだろうけどな。

そしてフレームワークから呼び出されるコードしか書かないから
お前の世界にはデザパタがでてこないわけだよ。

全て理屈が通ったなw
2017/10/01(日) 02:40:26.75ID:GRIqwmf+
>>190
だからそれは「フレームワークがActiveRecord前提で組まれている」からであり、
それを「ActiveRecordパターン」と呼ぶのは自由だが、GoFの言う「デザパタ」とは違うって。
まあ平行線ならそれでいいが。
2017/10/01(日) 02:44:03.92ID:H5Asg8Dc
> GoFの言う「デザパタ」とは違うって。

そりゃそうだ。ActiveRecordパターンは

エンタープライズアプリケーションアーキテクチャパターン
https://www.amazon.co.jp/dp/B01B5MX2O2/
にのってるマーチン・ファウラーのデザインパターンなんだから
2017/10/01(日) 02:46:05.25ID:U1G3k+aG
>>184
そうだな
デザインパターンをデザパタと呼称する奴はゴミな場合が多い
2017/10/01(日) 02:50:38.64ID:GRIqwmf+
>>192
>>180読め
2017/10/01(日) 02:51:22.94ID:H5Asg8Dc
ちなみにJava の Hibernate という O/Rマッパーは
ActiveRecordパターンとともに紹介されている
Data Mapperパターンを使っているが

Hibernate はフレームワークではない。ライブラリである。
2017/10/01(日) 02:53:02.16ID:GRIqwmf+
むしろお前らが何故そこまで必死なのか分からん。再度言うが、>>172の後半、

>>167
それ前から疑問で何度も聞いているのだが、お前のリアルでは
> 「○○パターンを使いましょう」
と言っているのか?

これも何度も言っているが、ストラテジーパターンに該当するとして、
その際、継承/委譲/関数ポインタのどれにするかで大違いなので、
現実的に「ストラテジーパターンで行きましょう」なんて議論は無理で、
「ここは委譲にしとく?」みたいなことにならないか?

デザパタ厨の皆様、これに答えてくれよ。
2017/10/01(日) 02:55:34.72ID:44WxUqLn
デザインパターンは不要の長物といってる人はデザインパターンを理解してないと思われる
何かしらのソフトウェアをゼロから作り上げるにあたっては必ず何かしらの大枠となる基本設計思想や基本構造を構想して行われる
それがGoFのデザインパターンに一致するかもしれないし、新しい独自のデザインパターンかもしれない
デザインパターンという言葉は両者含めての言葉である
つまり、デザインパターンを持たないソフトウェアなど本来は存在しない
2017/10/01(日) 02:55:40.17ID:H5Asg8Dc
>>196
お前がなんでそんなことに必死になってるのか?
みんなそう思ってるよw

ストラテジーバターンでしか
お前はデザインパターンを否定できないってね。
2017/10/01(日) 02:57:01.13ID:H5Asg8Dc
>>196

> これも何度も言っているが、ストラテジーパターンに該当するとして、
> その際、継承/委譲/関数ポインタのどれにするかで大違いなので、
> 現実的に「ストラテジーパターンで行きましょう」なんて議論は無理で、

ここはいろんなアルゴリズムを実行時に切り替えられるようにしよう
であればストラテジーバターンで行きましょう。という議論になる。

アルゴリズムを実行時に切り替えられるようにしようという設計の話で
委譲にしておく?なんて実装の話は出てこない。
2017/10/01(日) 02:57:04.47ID:44WxUqLn
むしろお前らが何故そこまで必死なのか分からん。再度言うが、>>172の後半、

>>167
それ前から疑問で何度も聞いているのだが、お前のリアルでは
> 「○○パターンを使いましょう」
と言っているのか?

これも何度も言っているが、ストパタに該当するとして、
その際、継承/委譲/関数ポインタのどれにするかで大違いなので、
現実的に「ストパタで行きましょう」なんて議論は無理で、
「ここは委譲にしとく?」みたいなことにならないか?

デザパタ厨の皆様、これに答えてくれよ。
2017/10/01(日) 02:58:01.82ID:H5Asg8Dc
ほらなw
答えたのに無視するもんなー

こういうやつです
2017/10/01(日) 03:01:11.73ID:44WxUqLn
>>196
デザインパターンとは設計の大枠となる構造や指針であって、それを決めてからより具体的な実装を検討していくってだけなんだが…
2017/10/01(日) 03:04:15.90ID:GRIqwmf+
>>201
だからID見ろよマジで

とはいえ君が>>199ならそれでいい。
他の奴も出来れば>>196に回答よろしく。
俺はもう寝るが。
2017/10/01(日) 03:05:53.36ID:44WxUqLn
>>203
回答しといたぞ
2017/10/01(日) 03:07:26.90ID:GRIqwmf+
>>202
お前もどういう神経なのか分からんが、議論したいのなら普通に入ってこい。
邪魔したいのもお前の自由だが、だったらさらっと入ってくるな。
普通に迷惑行為をしてるんだぞお前は。
2017/10/01(日) 03:09:34.07ID:44WxUqLn
>>205
デザパタっていうなら省略ポリシーをちゃんと守って書きなって言ってるだけ
2017/10/01(日) 03:14:58.23ID:44WxUqLn
>>205
デザパタと言ったかと思えばストラテジーパターンと言ってみたり、中途半端なんだよ
そういうやつが書くコードは、ところどころポリシーが違ったりしてるいい加減なコードを書きそうだ
そんな調子だからデザインパターンも軽視するのだろう
2017/10/01(日) 03:20:07.22ID:H5Asg8Dc
デザパタと略すならストラテジーパターンも
ストパンと略すべきだろうな
2017/10/01(日) 03:23:34.93ID:44WxUqLn
>>208
いやそれはおかしいだろw
2017/10/01(日) 08:46:24.59ID:GRIqwmf+
>>198
ストラテジーパターン以外についても前スレでさんざん
○○=△△パターン、って書いたろ。
まあいいが。


undoすらまともに実装出来ないデザパタ厨が、
何をどう勘違いしたら設計出来るつもりになれるのか不思議だったが、
だいぶ喋ってくれたので何となく分かったような気がする。
まあ後日読み返してみることにするよ。これについてはありがとう。
2017/10/01(日) 09:03:28.63ID:U1G3k+aG
undoとかundoとかundoとか自分がやったことあるところは自信あるもんな
2017/10/01(日) 09:33:28.54ID:GRIqwmf+
>>211
まあ今日はもうやり合う気はないんだが、多分お前らは設計を根本的に勘違いしている。
例えば、>>174内URLで言うなら、

> Table Data Gateway は J2EE の DAO に代表されるパターンで、
> ひとつのインスタンスがテーブルの全部のレコードを扱うというもの。
> SQL を一箇所に集めることで保守性を上げましょうね、というもの。

普通の人の設計=後半部分を考えること
お前らの言う設計=この全文を覚えること

になってる。
ただしこれがお前らみたいに考える能力がない連中にとって現実解になり得るのかもしれん。
これは前にも言ったが。

> 自分がやったことあるところは自信あるもんな
これがお前らの世界観を端的に示している。
経験済みならパターンとして暗記しているから出来るが、やったこと無いと何も出来ない。
最初の卵は絶対に産めないわけだ。
実はお前らがundoをさも難しいと思っていること自体がかなり滑稽なんだがな。

とはいえ新しい意味での「コピペプログラマ」が跋扈する時代でもあるから、
お前らのやり方でもある程度通用するのは事実なのだろう。
デザパタ厨=コピペプログラマのようだし。
2017/10/01(日) 10:06:53.73ID:GRIqwmf+
まあとにかく俺は、
「動的に対象関数を切り替える」と言えば済むだけのところで
「ストラテジーパターン」と言い換えるのは、厨二以外の意味はないと思うけどな。
そして「AcriveRecordパターン」なんて言っちゃうのは厨二過ぎて付いていけない。
「Rails標準O/Rマッパーの実装方式」と言えば誰にでも通じるのに。

とはいえこういう状況も割とよくあるのも事実だが。
2017/10/01(日) 10:46:47.52ID:IPLbJXkb
なんども使う処理は関数化して名前を付けるだろ
デザインパターンもそれと同じだよ
この考え方を理解できない人ってめちゃくちゃ長い関数を書きそうだよね
仕事では絶対に付き合いたくないタイプ
2017/10/01(日) 11:25:29.81ID:DL6cgIdt
>>178
とくに名前ついてないと思うけど
頭の悪い子が無自覚に食い下がるときって、いつもこうなってると思う
だから、いつもの展開だなって思うだけ

おまえら、バターン君これ以上いじっても何の利も無いぞ
もうそっとしておいてやれ
2017/10/01(日) 11:57:55.99ID:GRIqwmf+
>>215
それは君らが枝葉に対してしか反論しないからなんだがな。
とはいえこの意味も分からないのだと思うが。
君らのやり方については名前が付いていたはず。
2017/10/01(日) 12:04:09.09ID:qGSPhC6b
全体をみれてないのはどっちだろうね
2017/10/01(日) 12:06:57.99ID:GRIqwmf+
ああ、捕捉しておくと、
ID:H5Asg8Dcは頭が悪くて、多分短期記憶領域が非常に狭い。
だから論理的に筋立てるのではなく、言葉尻を掴んで反論してくる。
というかそれしか出来ない。
だがまあ、それでも話す気はあるみたいだから相手してみた、というところ。
最初からちゃんと議論してくれればこの展開にはなってない。
とはいえ、今のID:H5Asg8Dcにこれを求めるのは無理だ。

ただ、こういう、お前らに問題があるのに相手のせいにするというのはゆとりに多いし、
ゆとりは本当に馬鹿だから他のゆとりもそう思ってしまってみんなで同調する事も多い。
今まさにそうだが。
で、そういうのにも上の世代はブチ切れているから、そこら辺は自覚した方がいい。
2017/10/01(日) 12:22:54.23ID:yUwdbVfT
今デザパタ勉強中だけど、undo実装のパターンも二つぐらいなかったか
メメントとあともうひとつぐらい
よくわからんけど、なんでそんなに否定したがるかわからん
2017/10/01(日) 12:37:16.11ID:H5Asg8Dc
ほらな? 個人攻撃を始めちゃったw

これが記憶能力が少なくて名前を覚えられなくて


2分ヒープ木を用いて並び替えする方式でも
隣り合う要素の大小を比較しながら整列する並び替え方式でも
あらかじめ順番通りに並んだバケツを並び替えを行う要素分用意して順番に格納された要素をバケツから取り出し並び替えする方式でも
10進数の0以上の整数値の場合、0?10のバケツを用意しソートを行う要素の下1桁目に対応するバケツに格納する方式でも
バラバラになっている配列データを再帰的に最小限まで分解を行い分解し終わった後、結合を行う並び替える方式でも
動的に対象関数を切り替えるようなやり方をしよう

っていうやつなんやでw
2017/10/01(日) 12:47:03.35ID:qGSPhC6b
>>219
デザインパターンな
リアルで恥ずかしい思いしないように今のうちから直しといた方がいいよ
2017/10/01(日) 12:47:30.83ID:yUwdbVfT
パターンに名前をつけることにイラついてんのか?
2017/10/01(日) 12:48:22.68ID:yUwdbVfT
プログラマーってどうでもいいことに突っかかるよな
2017/10/01(日) 12:51:14.45ID:IPLbJXkb
PGは基本キチガイだよね
まともな奴だと逆に珍しい
もともとプログラム好きなオタクはもれなくキチガイだし
他の就職先なくてプログラマになったやつも内定取れないだけあって人間性のおかしなキチガイばかり
2017/10/01(日) 12:57:42.28ID:yUwdbVfT
GoFより自分の方が優秀だと主張したいのか?
2017/10/01(日) 13:10:11.98ID:OXD0q5aq
な?デザパタなんて使えないだろ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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