「【GoF】デザインパターン 6at TECH
「【GoF】デザインパターン 6 - 暇つぶし2ch362:デフォルトの名無しさん
07/03/31 13:15:59
>>361
議論になっていないと考える低脳はお前だけだ

363:293
07/03/31 13:27:20
だってボク低脳ですから

364:デフォルトの名無しさん
07/03/31 13:39:50
>>293の元設計の問題点 (つづき)

2-1. Bridgeパターン・スパゲティ (クラスの過剰分割によるOOモデルの崩壊)

 >>293のコードで省略されているクラス/コードを補足すると、>>304 のようになる。(※1)
  ※1.createWoodCutPrint() の //{ ... //} 内は、下記の等価コード。
    WoodCutPrintContext.getInstance().doWoodCutPrint()

 >>293は、TemplateMethodの各工程の処理詳細 (draw(),cut(),print()) を共用するために、
 「Coordinatorパターン」とでも呼ぶべき「変形Bridgeパターン」を導入し、
 Coordinatorで処理詳細の選択できるようにした。
  (注:蛇足だがこの種のカスタマイズには、
    古くから使われている DI (Dependency Injection)パターンの方が適している。
    更に蛇足だが、カスタマイズ内容はコード中に直接記述したりはせずに、
    外部ファイル(XML形式)に分離記述して後から変更可能にするのがマナーである。

 このコード(>>293, >>304)は、その字面の単純さにもかかわらず、
 挙動を読み取りにくく、保守性/拡張性が低い。(前提条件の変化に対し柔軟性が低い)

365:デフォルトの名無しさん
07/03/31 13:55:01
くだらねえことをいつまでもグダグダ書いてるが、>>275の問題の本質は
「テーブルとクラスをどうやってマッピングするか」ってところにあることに気づけや。
マッピング後のクラス設計以前の問題。

んでhibrenateとか見る限り、今のところ碌なやり方は存在しない。

366:デフォルトの名無しさん
07/03/31 13:59:48
うっせぇぞ低脳。

お前はさっさとODBMS営業逝ってこいや
負け犬が

367:デフォルトの名無しさん
07/03/31 14:03:10
ODBMS(w

ぷぷぷ

もう10年前にたかひろの子分に
「(製造業など一部の特殊分野を除いては)
 仮想記憶方式のODBMSなんてもう売れねぇよ」
って伝えたはずだけど。まだ悪あがきしてたんか。おめでてぇなw

368:デフォルトの名無しさん
07/03/31 14:10:47
そん時に提示した代替手段が、
・ ORマッピングによるRDBMSとの共存
・ Stonebreaker氏のORDBMSの発展
だったな。

369:デフォルトの名無しさん
07/03/31 14:41:39
>>293の元設計の問題点(つづき2)
(2-1. Bridgeパターン・スパゲティ (クラスの過剰な分割によるOOモデルの崩壊))

 >>293のコード(及び>>304の補足コード)は、その字面の単純さにもかかわらず、
 挙動を読み取りにくく、保守性/拡張性が低い。(前提条件の変化に対し柔軟性が低い)

 (1)挙動を読み取りにくくなる原因:
  原因(1-1) データと処理の分離記述による、カプセル化の破壊。
 (2)保守性が悪い原因:
  原因(2-1) カスタマイズ内容のハードコーディング。
     クラス選択の変更や、クラスの新規追加の度に、コード修正が必要になる。
 (2)前提条件の変化に対し柔軟性が低くなる原因:
  原因(3-1) モデルの過剰な単純化により、現実世界の複雑な問題に適応できなくなる。

 以下では、その原因を探る。
 原因(1-1)データと処理の再分離による、カプセル化の破壊
    オブジェクト指向では、データとその処理をカプセル化し、クラスを導入する事で
    (1)データ操作の局所性
    (2)外部操作インタフェースの限定、
    (3)型システムによる安全性/信頼性の向上
    が可能になり、それを利用してプログラムの信頼性/可読性/保守性の向上を図れる。

    しかし>>293,>>304のコードでは、
    データ(Hanzai及びバリエーション)と処理方法(~Processor)を別々のクラスに分離記述した後、
    関連するデータクラスと処理クラスを適切な方法で再カプセル化しなかったため、
    オブジェクト指向のメリットが得られなくなっている。(非OO的コード)

370:デフォルトの名無しさん
07/03/31 14:59:40
>>355>>364>>369
その問題点を直したスケルトンコードを頼む

371:293
07/03/31 15:13:25
>>365が僕の考えからは少し極端な意見だがいいこと言った。
まず「パターンありき」の考え方はそもそもおかしい。だから敢えてTemplateMedhodパターンに
とらわれないコードを書いたんだがね。
自分のレスの後だったんでよっぽど悔しかったんだろうw。
だが少しだけ付き合ってあげようw

> >>293のコードで省略されているクラス/コードを補足すると、>>304 のようになる。(※1)
なりません。

> >>293は、TemplateMethodの各工程の処理詳細 (draw(),cut(),print()) を共用するために、
・・・・
> このコード(>>293, >>304)は、その字面の単純さにもかかわらず、
> 挙動を読み取りにくく、保守性/拡張性が低い。(前提条件の変化に対し柔軟性が低い)
カプセル化を否定しているように聞こえるが?

そもそも鈴木君や田中君をドメインとして(まぁドメイン領域内のある部分ではあるが)時点で設計が
崩壊してるんだけどw
>>278の要件を分析してみると、

1.このケースの主処理は木版が作成プロセスである。
2.鈴木君や田中君は木版画作成プロセスのバリエーションである。

この2点から、木版画作成プロセスを中心に考えて、どのように違いを吸収していくかを考えないと遺憾のとちゃうの?
で、

3.木版画作成プロセスから見た場合、鈴木君や田中君(、山田君、佐藤君・・・・)の役割は、
  木を塗ったり切ったり印刷したりの方法論を持っているオブジェクト。
4.鈴木君や(略)画持っている方法論は、皆違う場合もあれば同じ場合もあるから、鈴木君や田中君(ry)と独立するべき。
  (そもそもの>>275の要件)

となるのが自然な設計だと思うけど?

372:365
07/03/31 15:25:41
>>371
キチガイにかまわないであげてください。

373:293
07/03/31 15:34:06
>>372
むむ・・・
スレが荒れてしまいますな・・・
まぁ彼が言うクラス粒度が細かくなりすぎると見通しが悪くなるのは事実だけどね
その辺の加減が難しい・・・

374:デフォルトの名無しさん
07/03/31 15:51:23
 -- 引き続き、元質問者(>>275) の挙げた例題(>>278) を題材に、 --
 -- デスマ現場で発生した問題 (>>306-307) を論じる。       --


375:デフォルトの名無しさん
07/03/31 15:53:01
>>293の元設計の問題点(つづき2)
(2-1. Bridgeパターン・スパゲティ (クラスの過剰な分割によるOOモデルの崩壊))

 原因(3-1)モデルや型の過度な単純化による、複雑な問題への適応能力低下。
    現実の問題は、>>293のような単純な構造は持っていない。

    まず、データにはバリエーションがある。
    例えばデスマ事例(>>306-307)で指摘されているように、
    操作対象となるオブジェクト/データ(Hanzai)は一種類ではなく、
    実際には何種類ものバリエーションが存在する。(分析モデル)
     Hanzai <─┬ 原料Hanzai <─┬ 木版<─┬ 柔かい木版
           │         │    └ 硬い木版
           │         ├ ゴム版
           │         ├ 芋版
           │         └ 銅版
           ├ 加工中Hanzai<─┬ 下絵中Hanzai
           │            └ 切除中Hanzai
           └ 完成した版画版
     ※ ここでHanzaiのサブクラスは、
      工程進行に伴う状態変化 (原料→下絵中→切除中→完成) と見なせる。
      ただし、後工程になるほどデータの内部構造は複雑になっていく。
    
    次に、データはしばしば単純なモノシリック構造ではなく、
    複数のデータを内部構造として持つComposite構造を持つ。
     完成した
      版画版 ◇┬ 背景部 ◇─(略)
     (人物画)  └人物部 ◇┬ 頭髪
                    ├ 顔  ◇┬ 目
                    │     ├ 鼻
                    │     └ 口
                    ├ 上着

376:デフォルトの名無しさん
07/03/31 15:59:12
    当然のように、処理もこのComposite構造の対応している必要がある。
     人物画のゴム版画の為の
     切除処理 ◇┬ 背景部 ◇─(略)
             └人物部 ◇┬ 頭髪パターン切除
                     ├ 顔  ◇┬ 目をリアリスティックに表現する切除
                     │     ├ 鼻の膨らみを表現する切除
                     │     └ 口の生々しさを表現する切除
                     ├ 毛皮パターン切除

    それでは、切除工程の操作は、作成対象データ(人物画)と同じComposite構造を持ち、
    素材×Compositeの要素数分必要になるのか?

    そんな事はない。
    例えば、頭髪パターン切除と、毛皮パターン切除には同じ切除テクニックが使える。

    これが現実世界の共用だ。


377:デフォルトの名無しさん
07/03/31 16:11:43
御託はいらん
読む気も無い

378:デフォルトの名無しさん
07/03/31 16:12:41
【そして、現実の世界へ・・・】

それではここで、精神性疾患患者たかひろの設計でデスマ化した
デスマ事例(>>306-307)に戻ろう。
途中から読んでいる方には何の事やらサッパリ判らないだろうから
説明を加えると。

>>293のコードは、精神性疾患患者たかひろが、その劣悪なる知能で設計し
その結果デスマを巻き起こしたコードと極めて類似している。
したがって、>>293の詳細な分析は、デスマ事例コードへの解決策を与えるのである。


379:デフォルトの名無しさん
07/03/31 16:39:53
いまごろ解決しても、お前の頭がおかしくなったのはもとには戻らん。
あきらめろ。

380:ワロス
07/03/31 16:46:39
「版画の世界」から、「デスマ・システム」への概念マッピング(・∀・)
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
         【版画作成アプリ】       【マスタメンテ型基幹システム】
[主要ドメイン] 版画作成プロセス       マスタ更新プロセス
[主要データ] 下絵、原料版材         入力 (画面入力,電文入力)
         完成した版画版        出力 (DB更新,電文出力,)
                               (付帯的な画面出力)
[主要プロセス]版材取得            入力取得
         下絵作成            入力取得
         版材の品質チェック      入力チェック
         下絵と切除テクのマッチング 業務チェック
         切除処理            DB参照、演算処理、DB更新
         印刷処理            出力処理 (画面出力,電文出力)

381:デフォルトの名無しさん
07/03/31 16:49:08
【たかひろと2ちゃんの不思議な関係】

・たかひろがかつて在籍していた会社は全て、たかひろが去った直後に
 2ちゃんでしつこく攻撃される。

・たかひろの元仕事相手、脳内ライバル、
 その他たかひろが自分にとって脅威だと感じる対象は、
 2ちゃんのあちこちのスレに中傷文が書かれる。

・たかひろが出没するスレには                 ← いまココ (・∀・)>>358, >>371, >>379
 常に「キチガイ」「発狂」を連発する荒しが発生する。

・2ちゃんに居る頭も性格も悪い粘着に               
 噛んで含めるように高度な概念を教えてやると、
 いつの間にかたかひろ本人も同じ意見を主張するようになるw

・たかひろは論破されていても、それに気付かないフリをして勝利宣言をする。
・たかひろは論破されると、他のスレで暴れる。
・たかひろは成りすまし/匿名発言をよくするが、それが見破られると
 「あれは自分に悪意を持っている一味の仕業だ」と苦しい言い訳をする。

さ~て、まだ荒しを続けるつもりかな?

382:デフォルトの名無しさん
07/03/31 16:51:04
またたかひろが暴れてるな
 
 そう。お前自身の信仰は誰も問題にしていない。
 例え神の存在を否定する信仰だろうと、
 ここ日本では誰もメクジラなど立てない。
 
 お前が問題なのは、
 お前がお前自身の信仰を大切にしているのと同様に、
 他人も自身の信念や大切なものを抱えながら生きている
 という事を理解せずに、
 ・他人の信念を批判しまくったり、
 ・自分勝手で不合理な自己主張をおしつけたり、はたまた 

   匿名で 他人の名前を挙げて
   執拗な人格批判/いやがらせを繰り返している

 という事実にある。

 お前と正式に顔を合わせて以来もう数年経つが
 ある日突然ネット上で名前を挙げて非難が開始され俺はとまどった。

 俺は匿名で非難を浴びるような生き方は、これまで一切していない。
 なのに、お前に会ってしばらくしてから突然攻撃が始まった。
 最初はお前の周辺に異常者が居て、俺を攻撃してるのかと思った。
 ・・・でも結局お前がその異常者本人だと気付いた。
 お前しか知りえない情報、お前しか感じ得ない感情で
 キチガイじみた様相で攻撃してくる奴は、お前しかいないって。

 悔い改めよ。そしてお前が迷惑をかけた人、一人一人に許しを乞え。

383:デフォルトの名無しさん
07/03/31 17:00:02
荒しはスルーするとして。

>>380
その概念マッピングは、>>375-376 と多少ズレている。
マスタメンテ型システムってのは、
システム開発の都合で業務処理を極端なまでに単純化して、
    業務処理アプリ=DBテーブル編集アプリ
と見なすもんだ。

すると主要ドメインはあくまで業務処理プロセスであって、
マスタ更新プロセスではない。


384:デフォルトの名無しさん
07/03/31 17:08:41
>>379
たかひろ、お前が壊れているのは最初から知っている。
お前が壊れた設計をしていたのにも、1週間と待たずに気付いた。
当然の事ながら、問題の解決策もすぐに判った。

ただ、お前がお前自身の精神状態の異常さに気がつかずに、
多くの人々に多大な迷惑をかけ続けた経緯には、
さすがの俺も心が痛んだ。
だから、あえてお前の古傷を持ち出し、
お前の行動を是正しようとしているんだ。

謙虚になれ、たかひろ。
お前はお前が思っているのの1/100も有能ではない。
単なる空っぽの本棚だ。お前の頭は



385:375
07/03/31 17:16:39
>>375の分析モデルがズレたので、再投稿
------------------------------------------------------------
   【版材の分析モデル】

     Hanzai <─┬ 原料Hanzai <─┬ 木版<─┬ 柔かい木版
             │            │    └ 硬い木版
             │            ├ ゴム版
             │            ├ 芋版
             │            └ 銅版
             ├ 加工中Hanzai<─┬ 下絵中Hanzai
             │            └ 切除中Hanzai
             └ 完成した版画版
------------------------------------------------------------

386:375
07/03/31 17:17:57
あれ?まだずれてる。

>>375の分析モデル図差し替え
------------------------------------------------------------
   【版材の分析モデル】

     Hanzai <─┬ 原料Hanzai <─┬ 木版<─┬ 柔かい木版
             │            │      └ 硬い木版
             │            ├ ゴム版
             │            ├ 芋版
             │            └ 銅版
             ├ 加工中Hanzai<─┬ 下絵中Hanzai
             │            └ 切除中Hanzai
             └ 完成した版画版
------------------------------------------------------------

387:デフォルトの名無しさん
07/03/31 17:53:08
>>383

「マスタメンテ型アプリ」設計が導入されたのは、
今回ではなく、何世代も前の電算機導入の頃の話だろう。
それ以来業務処理は「マスタメンテ型アプリ」に合わせて変形し成長した。

だから今さら「マスタメンテ型アプリ」抜きの業務処理プロセスなど
存在しない。

  業務処理プロセス(の一部) ∝ マスタメンテ型アプリのプロセス

としても大きな咀嚼はないだろう。

もし、新システム提案の初期に業務分析の専門家が入り、
提案を新しい業務プロセス設計の形で詳細に残していたら・・・
そこから正確なドメイン・モデルを作成できるのかもしれない。

だが今時の新システム構築なんて、大抵中身はマイグレーション。
COBOLプログラマがプログラムの動きを日本語で説明して「設計書でござい」
なんて言い出すおバカな世界だからなぁ・・・

388:デフォルトの名無しさん
07/03/31 17:54:57
>>365
さて、そろそろORマッピングスレを爆撃に行くかw

389:369
07/03/31 19:59:13
バカの相手をするのはつもりは一切ないが、
バカの勘違い/妄言を見て、他の人が間違った理解をするとよろしくないので
簡単に>>371 の間違いを指摘をしておく。

なおここで>>371とは、元レス>>369に対するバカの妄想であり、
ここでは引用符> を先頭に付けて示してある。

A.> >>365が僕の考えからは少し極端な意見だがいいこと言った。

  ORマッピングの話は、>>275の前提条件のスコープ外。

  議論に直接関係ない話を持ち込んで、議論を撹乱するのは
  詐欺師の常套手段なので、みなさん気を付けるように。

  また、もしORマッピングに興味を持った人が居たら、
  まずはデータベース板の該当スレを参照すると良い。

B.> > >>293のコードで省略されているクラス/コードを補足すると、>>304 のようになる。(※1)
  > なりません。

  これは自分で補足コードを書いて見れば簡単に確認できる。
  結果は>>304 のようなコードになるはずだ。
   (但し>>364に説明してあるように、等価コード部 //{~}// 内は >>364※1と読み替える)

  確認作業はコーディング能力のある人にしか実行できないが、
  それは致し方ない所だろう。



390:369 (>>389つづき)
07/03/31 19:59:56
バカの相手をするのはつもりは一切ないが、
バカの勘違い/妄言を見て、他の人が間違った理解をするとよろしくないので
簡単に>>371 の間違いを指摘をしておく。

なおここで>>371とは、元レス>>369に対するバカの妄想であり、
ここでは引用符> を先頭に付けて示してある。

C.> > このコード(>>293, >>304)は、その字面の単純さにもかかわらず、
  > > 挙動を読み取りにくく、保守性/拡張性が低い。(前提条件の変化に対し柔軟性が低い)
  > カプセル化を否定しているように聞こえるが?

  はい、みなさん注目!!!
  これが典型的な詐欺師の手口です。騙されないように。

  元レス>>369>>293-294のカプセル化破綻問題を指摘している。
  自分の問題点を指摘された >>293は、逆上して事実と反対の事を言い出している。

1.システムの全体像が見えていない以上、
  処理の動作主体をモデル化しておく必要がある。
  ここで動作主体とは、「鈴木君」や「田中君」である。

2.動作主体が「鈴木君」や「田中君」であり、
  プロセスは >>293の最初のクラス=WoodCutPrintProcessクラスである。


391:369 (>>389つづき)
07/03/31 20:05:01
バカの相手をするのはつもりは一切ないが、
バカの勘違い/妄言を見て、他の人が間違った理解をするとよろしくないので
簡単に>>371 の間違いを指摘をしておく。

なおここで>>371とは、元レス>>369に対するバカの妄想であり、
ここでは引用符> を先頭に付けて示してある。

1.> このケースの主処理は木版が作成プロセスである。

  このケースでは、システムの全体像が見えていない以上、
  処理の動作主体をモデル化しておく必要がある。

  ここで動作主体とは、「鈴木君」や「田中君」である。

2.> 鈴木君や田中君は木版画作成プロセスのバリエーションである。

  前述のように、動作主体が「鈴木君」や「田中君」であり、
  プロセスは >>293の最初のクラス=WoodCutPrintContextクラスである。

  (なおこのクラスの名称 "WoodCutPrintContext"は、内容を適切に表していない。
   正しくは、"WoodCutPrintProcess"と命名するべきである。根拠は>>297 参照)



392:デフォルトの名無しさん
07/03/31 20:06:02
たかひろがバカなのは判ったから
とにかく sageを覚えろ

393:デフォルトの名無しさん
07/03/31 20:18:05
あらあら、よく見たらアイツ
またまた敗走宣言してるやん >>379

ワロス

394:デフォルトの名無しさん
07/03/31 20:19:51
>>380
GJ!

「版画作成プロセス」と「マスタメンテ・プロセス」は所詮は別物、
もともと厳密に1対1に対応するものではない。

そこで>>380の齟齬の悪そうな部分を若干修正してみた。
大きな変更点は「版画作成プロセス」でなく「版画版作成プロセス」とした点。

----------------------------------------------------------------------
「版画の世界」から、「デスマ・システム」への概念マッピング part2
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
         【版画版作成アプリ】      【マスタメンテ型基幹システム】
[主要ドメイン]  版画版作成プロセス       マスタメンテ・プロセス
[主要データ]   版材原料            入力 (画面入力データ)
         下絵              DB参照データ
         加工中の版画版  
         完成状態の版画版        出力 (DB更新データ)
         刷り上がった版画        表示 (画面表示データ)
[主要プロセス]  版材原料取得          入力取得
         版材作成            入力チェック
         下絵取得&下絵処理       業務チェック, DB参照
         切除処理            演算処理, DB更新
         印刷処理            画面表示
----------------------------------------------------------------------
修正結果を見ると、両者の対応関係はそんなには悪くない。
むしろ、別物にしてはずいぶん良い対応関係を持っている、と言える。

395:394 AAズレ修正
07/03/31 20:35:49
----------------------------------------------------------------------
「版画の世界」から、「デスマ・システム」への概念マッピング ver.2
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
         【版画版作成アプリ】       【マスタメンテ型基幹システム】
[主要ドメイン] 版画版作成プロセス       マスタメンテ・プロセス
[主要データ]  版材原料             入力 (画面入力データ)
         下絵                DB参照データ
         加工中の版画版  
         完成状態の版画版       出力 (DB更新データ)
         刷り上がった版画        表示 (画面表示データ)
[主要プロセス]版材原料取得          入力取得
         版材作成             入力チェック
         下絵取得&下絵処理      業務チェック, DB参照
         切除処理             演算処理, DB更新
         印刷処理             画面表示
----------------------------------------------------------------------

396:デフォルトの名無しさん
07/04/01 02:18:44
ある意味すごいなw
未だにコードが出てこないし解釈間違ってるけど、このエネルギーはスゴイ。
便所の100wと比喩してはいけないw

397:396
07/04/01 05:00:48
スマソ 誤爆した

398:デフォルトの名無しさん
07/04/01 07:01:05
まあまあ
元々の質問はもうとっくにクローズしてるし、
>>293はjavaとよく似た擬似コードで記述されたクラス設計に過ぎんから、
代替コードを示す必要もない。

現在議論されているのは、>>293の背景にある設計理念の問題、
そして、それに類する設計を現実に適用した時のギャップね解決方法だろ。

理解できないなら結論が出るまで静観するがよろし

399:デフォルトの名無しさん
07/04/01 08:41:27
このスレ、爆発力はあるな
問題は火のつけ方

400:デフォルトの名無しさん
07/04/01 09:44:28
>>397
ナニコレww
勝手に誤爆にするなよwww
>>397-398
おまいウザイから別にスレ立て手やれよ

401:デフォルトの名無しさん
07/04/01 09:52:28
あとそんなに自分の主張に自信があるなら
コテつけてレスしろ

402:デフォルトの名無しさん
07/04/01 10:38:41
>>400-401 またスレ荒しか

403:デフォルトの名無しさん
07/04/01 10:40:13
おまぃはバカなんだから黙っとけ

404:デフォルトの名無しさん
07/04/01 16:38:31
いやさ、例の「精神性疾患の俗称連呼」の人、
別スレで暴れまくっててえらい騒ぎになってるわ。

どうも東京都在住の44歳の人物らしい。
44歳にもなって2ちゃん三昧とは幼いね。

405:デフォルトの名無しさん
07/04/01 16:50:51
リアルワールドが悲惨なんだよ、きっと

406:デフォルトの名無しさん
07/04/01 17:02:21
よしよし

407:デフォルトの名無しさん
07/04/01 18:05:17
NGワード推奨:キチガイ

408:デフォルトの名無しさん
07/04/01 19:09:37
某スレで、コーディング能力も設計能力も疑わしい44歳の人が
「擬似コードを元にした議論はよくねぇ~」とか叫んでて笑えた。
「print文入れて動作を見ればいい」ってそれなんて名前のBASIC言語?w

409:デフォルトの名無しさん
07/04/01 20:54:04
なんと言う春休み。
思わず読み飛ばしてしまった。
このスレはしばらく伸びる。

410:デフォルトの名無しさん
07/04/01 21:05:50
>>409
荒しに来たのなら、帰ってくれ。

411:デフォルトの名無しさん
07/04/04 02:42:25
こっちが平和になったと思ったら
今度はあっちで暴れてたんだな
スレリンク(tech板)

412:デフォルトの名無しさん
07/04/04 14:16:56
>>407
自分がそれだから、そうやって相手を封じたい訳ね。
ま、相手なんてお前の脳内にしか居ないんだけど(藁

413:デフォルトの名無しさん
07/04/04 14:25:05
誤爆?


414:デフォルトの名無しさん
07/04/05 14:50:04
>>412
おまえが自己の行動に無自覚な精神障害者である事はよくわかった。

415:デフォルトの名無しさん
07/04/06 14:56:12
ここのスレ主はそろそろ鉄格子付き個室病棟の中か。

頭も性格も悪いスレ主に意見すると
ひたすら泥沼に引きずり込もうとあがくから
始末が悪い。

416:デフォルトの名無しさん
07/04/06 15:56:32
スレ主は、OOやデザパタに対して、狂信的な宗教感情を持っている。

その信仰はあまりにも愚かで盲目的であり、
自身の独自解釈とは異なる意見を持つ者に対して
狂信的信者の狂ったな正義感を持って攻撃と排除を試みる。
しかし、世の中に広く受け入れられる技術ノウハウというものは、
そのようなカルト的宗教活動とは一切無縁のものである。

417:デフォルトの名無しさん
07/04/06 16:08:13
個人的な技術ノウハウの蓄積は、
 ・日々の実践と経験を通じた、メンタルモデルの形成
 ・合理的思考による、メンタルモデルの検討と洗練
 ・明確な目的意識に基づく、合目的なノウハウの抽出と洗練
を通じて行われる。

そして世の中に広く受け入れられる技術ノウハウというものは、
個々人のノウハウを、他の専門家を交えた健全な議論に晒し、
目的と手段の合理性を詳細に検討し、
その過程で多くの人々が同意し共感する事を通じて、
初めて成立するものである。

418:デフォルトの名無しさん
07/04/06 16:28:04
注: 誤解のないように注記しておく。

ここでスレ主とは、今回のスレを立てた人物の事ではなく
関連スレのど真ん中に居座り、罵詈雑言を撒き散らしては議論妨害を繰り返す、
牢名主のような人物の事である。

419:デフォルトの名無しさん
07/04/06 19:28:31
GoFってなんて呼べばいいの?
個人的にはゴフって読んでるんだけど、公の場で使ったら笑われたりする?

420:デフォルトの名無しさん
07/04/06 19:37:48
>>419
情報処理用語の読み方を確認するスレ
スレリンク(tech板:670番)

 670 :デフォルトの名無しさん :2005/05/16(月) 20:02:16
  GOFはともかくGoFはゴフと読んでる。

421:デフォルトの名無しさん
07/04/06 20:33:32
ゴフゴフ

422:デフォルトの名無しさん
07/04/06 22:39:06
護符としての効能はあるんだろうか?

423:デフォルトの名無しさん
07/04/07 01:00:50
      __
    i<´   }\   , - 、
   ヽ.._\./  .ンく r-兮、 __
    ∠`ヽ.! /   ヾニEヲぐ ,ゝ->     さすがGoFだ。
   /_`シ'K-──‐-、l∠ イ       デスマくらっても
   l´__,/l\、_ ̄0¨0)゙@Yヘ, -┤      何ともないぜ。
.    l'___|⌒ヾ''ー==、ーr='イ i二|      
   / .」   i   /./7r‐く  lー!
.   f.  ヽ‐i人.∠'<   _i. l,.-ゝ.
    トiヘヘ「ト〈      `X  トレi7__|
   〉ト:トハj`! i.    /  トー┤lルj,リ
  /‐+----+‐l    iー--i---ヾ'〃
.  l_i____i__|   |___i,__i_|

424:デフォルトの名無しさん
07/04/07 01:57:18
荒らしは帰ってくれ

425:デフォルトの名無しさん
07/04/07 20:59:35
あっちの隔離スレ、すげぇ荒れようだな。

こっちであんまヘタレな擬似コード出してくるから
ちょっとからかってやったらすぐキレ出して、
改めて問題点を7レス分ほど指摘しただけで
延々と一週間もこの騒ぎだ。

狂信者って本当に怖いね。

426:デフォルトの名無しさん
07/04/08 00:52:40
イタイ・・・・

427:デフォルトの名無しさん
07/04/08 00:56:10
スレリンク(tech板)

428:デフォルトの名無しさん
07/04/21 09:39:44
State パターンで相談です。各 State クラス間でコンテキストを共有したい
場合に、相互の依存度を下げるにはどういったイディオムが使えますか?

例えば、ウィザード形式のインストーラの画面を State と見なすと、
A 画面で設定した内容を次の B 画面でも使いたいとか、最終的には、
全ての画面で設定した内容をもとに処理を行いたい、など。

Context を各 State のコンストラクタに渡してあげれば目的は達成できる
のですが、各 State が興味があるのは Context の限られた一部分であり、
Context 全体を渡すのは不釣り合いな気がしています。

もう一つの悩みは、Context が受動的な「共有データクラス」の役割を
演じることになるというものです。どうもこの構造がしっくりこない
というか、オブジェクト指向っぽくないと思うのです。

あるいは、こういう場合にはそもそも State パターンは使わないとか、
そういった指摘でもかまいませんので、よろしくお願いします。

429:デフォルトの名無しさん
07/04/21 09:47:55
その前にStateパターンのクラスズをよく見て依存関係を
シッカリ把握しなさい

430:428
07/04/21 10:02:23
>>429
問題にしているのは以下のような依存関係です。
Controller has a State
Controller has a Context
StateA is a State
StateB is a State

431:デフォルトの名無しさん
07/04/21 10:13:33
>>430
私が問題にしているのは
>各 State が興味があるのは Context の限られた一部分であり
です。
StateはContextに興味はありません。

432:デフォルトの名無しさん
07/04/21 10:26:13
ハッタリ業務コンサルのデザインパターン解釈はダメダメだな

433:デフォルトの名無しさん
07/04/21 10:42:32
まー独自解釈して苦しんでしまう事は初心者にはよくあることだから気にする必要は無いw

434:428
07/04/21 10:44:02
>>431
Context という言葉を使ったのがまずかったですね。ごめんなさい。
GoF では Context が State に処理を移譲することになっていたかと
思いますが、ここでは「共有データ」の意味で Context を使ってます。

つまり、Controller が State に処理を移譲していて、各 State は
Context を参照・更新するという構造です。

State が Controller に無関心だと言う点についてはもちろん同意です。
今回の悩みどころは、各 State の「成果物」を共有する時のうまい手段は
ないものか、というものです。

GoF に従うなら、
Context has a State
Context has a SharedData
StateA is a State
StateB is a State
で、StateA や StateB が SharedData を参照更新する、という感じです。

435:デフォルトの名無しさん
07/04/21 10:48:50
ContextがMediatorになるんじゃないの?


436:デフォルトの名無しさん
07/04/21 10:52:17
WebApplicationやStrutsと同じジャマイカ

437:デフォルトの名無しさん
07/04/21 11:07:11
扱うデータの型や処理の型を問題にせずSharedDataでひとくくりにするから
概要設計レベルではContextで解決したつもりになっていても
詳細設計レベルで一気に破綻するんだろ。

ハッタリコンサル(初心者)の典型だな

438:デフォルトの名無しさん
07/04/21 11:12:12
>>435
Mediatorで相互依存性を弱めるというのは正しい方向だが
それをContextと呼び続けるのは病気だ。
今ならDIだろ。

439:デフォルトの名無しさん
07/04/21 11:15:19
いまどき概要設計/詳細設計かよ

440:デフォルトの名無しさん
07/04/21 11:17:17
ハッタリコンサルはメーカ毎の工程名の相違に鈍感
OMGの工程名対応表でも見とけクズ

441:デフォルトの名無しさん
07/04/21 11:22:56
いまどき工程かよw

442:デフォルトの名無しさん
07/04/21 11:27:07
ハッタリが話題ずらしに必死だな
上空レベル、海面レベルとでも読み替えておけクズ

443:デフォルトの名無しさん
07/04/21 11:28:25
>>435
> ContextがMediatorになるんじゃないの?

ContextではなくMediatorだろうな、
古臭いデザパタ厨房の妄想に合わせてやれば

444:デフォルトの名無しさん
07/04/21 11:29:48
>>442
そりゃユースケースの話だろwバーカw

445:デフォルトの名無しさん
07/04/21 11:31:11
ハッタリ必死すぎるぞ

カプサイシン摂取過多でそろそろ拳銃乱射事件かw

446:デフォルトの名無しさん
07/04/21 11:33:12
ハッタリコンサルの仕事:
奴隷コーダに一画面分のコードを書かせ、
それが複数画面で使いまわせると信じ込んで
詳細設計の雛形にする

447:デフォルトの名無しさん
07/04/21 11:35:53
ハッタリコンサルの仕事2:概要設計
一画面分のコードで、データ類がContextにまとめられているのを見て、
Contextというクラスを作れば複数画面にも対応できるとはずだ
という妄想設計をすること。

448:デフォルトの名無しさん
07/04/21 11:37:09
>>446
お、宗旨替えか?
そうだよSE/コンサルはコーダ以下なんだよwやっと気づいたか

449:デフォルトの名無しさん
07/04/21 11:44:03
>>448

はぁ?
お前がダメ人間だからといって、
他もダメ扱いすんな。

中小企業のダメコンサルに比べたら
大企業のSEには中にはまともなのが居るよ。

例えば俺。
コーディングもできるし(あたりまえ)、
科学技術にも口出しできるし、
ダメコンサルを叩いて再起不能にする事もできる。
お前を今叩いているようにな

450:デフォルトの名無しさん
07/04/21 11:45:54
ここで叩かれてボロボロになってるハッタリコンサルって、誰なの?

451:デフォルトの名無しさん
07/04/21 11:50:20
>コーディングもできるし(あたりまえ)
コンプまるだしw

452:デフォルトの名無しさん
07/04/21 11:53:19
>例えば俺。
日中カキコしまくりのヒキコモリが大企業のSE?w

453:デフォルトの名無しさん
07/04/21 11:54:03
>>450
各種情報を総合すると、こいつが本人らしい。
URLリンク(megalodon.jp)スレリンク(tech板:626番)&date=20070410182152

454:デフォルトの名無しさん
07/04/21 11:56:16
>>453
みっともねぇ~ないい歳こいた親父が
2ちゃんごときで必死になっちゃってw
仕事場でオナニー三昧2ちゃん三昧って
それなんていう引き篭もり部屋?

455:428
07/04/21 12:00:16
うーん。Mediator だとクラスの数が増えてしまうので、ちょっとおおげさ
かなという気がします。コストとメリットがバランスしないというか。

問題をうまく処理できることはもちろん大切なんですが、「やり過ぎ」も
避けたいなと。

データ共有型 State パターンは割とありがちなことかと思ったのですが、
検索してもあんまりピンとくるものがないんですよね。まあ、探し方が
悪い気もしますが、どちらかと言うと状態遷移の問題に着目したものが
多かった気がします。

C++ だし参照渡しでお茶を濁そうかなと思ったり。

456:デフォルトの名無しさん
07/04/21 12:06:18
>>454
おめえは気の利いたこといってるつもりなんだと思うけど、
とにかくセンスが無さすぎる

457:デフォルトの名無しさん
07/04/21 12:06:31
妄想に基づく独自解釈をGoogleで探しても、適切な例が出てくるわけない。
StateパターンにおけるContextクラスの役割は約一ヶ月前に書いた通り。

お前の負けだ。観念しろ

458:デフォルトの名無しさん
07/04/21 12:08:07
>>456
キチガイのセンスに合わせるのは難しいな
四流大学出はそういう会話が得意なんだろうけど。

459:デフォルトの名無しさん
07/04/21 13:21:07
>>446
手足として使った奴隷コーダに強烈な恨みを買っているのが
ハッタリコンサルのダメダメな所。

「勝手に引き抜いて、変な仕事ばかり回してきて
 あのバカは一体何様のつもりだ?」
って泣いてたぜ、奴隷コーダちゃん


460:デフォルトの名無しさん
07/04/21 13:24:16
>>459
そうそうw
そういえばあのコーダも使えなかったよなw
Javaのクラスはオブジェクトじゃない!とかわけのわからないこといってたしw

461:デフォルトの名無しさん
07/04/21 13:25:40
>>460
そういえばあいつ、頭おかしくなって会社やめちゃったってなw
ヒキって2chばっかやってるらしい。
版画とかよばれてるしw

462:デフォルトの名無しさん
07/04/21 13:33:03
>>461
ああ、あのゴミか
ほんと死ねばいいのにな

463:デフォルトの名無しさん
07/04/21 13:34:23
>>462
同意w
おれがあいつならとっくに吊ってるw

464:デフォルトの名無しさん
07/04/21 13:34:37
>>460
バカが発振し始めたな
デブのことだよハッタリ高弘ちゃん

465:デフォルトの名無しさん
07/04/21 13:36:25
>>464
版画ハケーン(版画風ry

うわきもw

466:デフォルトの名無しさん
07/04/21 13:36:31
早速スレに晒しときましたw

467:デフォルトの名無しさん
07/04/21 13:39:24
おいおまいら、アドレナリンは俺専用のオモチャだ
勝手にアドレナリンをいじるな
暇つぶしに適当な書き込みをするとすぐ怒り出すのでとても面白い


468:デフォルトの名無しさん
07/04/21 13:42:11
>>467
強がりいってらwあったまわりいw

469:デフォルトの名無しさん
07/04/21 13:42:51
>>467
カプサイシンの間違いじゃねぇの
半島人臭いし

470:デフォルトの名無しさん
07/04/21 13:43:53
ムッキー、ファビョーン(笑

471:デフォルトの名無しさん
07/04/21 13:45:29
おいハッタリをあんま構うな
あまり追い詰めると
出身校(四流大)で拳銃乱射事件起こすぞきっと

472:デフォルトの名無しさん
07/04/21 13:46:34
>>469
そうそうw
版画もちょっと煽るとすぐファビョるしなw
半島に帰れよw

473:デフォルトの名無しさん
07/04/21 13:47:38
ハッタリ高弘の好物
キムチ餃子

474:デフォルトの名無しさん
07/04/21 13:48:59
さぁーってと
昼休みのハッタリいじめはそろそろ飽きたし
四月の休日を満喫してくるか(←満喫に行くって意味じゃないよw

475:デフォルトの名無しさん
07/04/21 13:52:03
版画版画ってバカにすんな!!
Javaのクラスなんかオブジェクトのわけないだろ!

たしかにハッタリたかひろも俺も鮮人だが、それがどうした!
低脳どもが!

476:デフォルトの名無しさん
07/04/21 13:53:51
ハッタリの成りすましはクオリティが低くて萎える

477:デフォルトの名無しさん
07/04/21 13:54:42
GoF本って独習C++を一通りやった程度の知識で理解できますか?

478:デフォルトの名無しさん
07/04/21 13:54:51
メモ:ハッタリは半島人

479:デフォルトの名無しさん
07/04/21 13:56:31
>>478
半島人には関わらない方がよい。

480:デフォルトの名無しさん
07/04/21 21:03:15
>>477
基本的に経験則のまとめ本だから、必要な状況にならないと理解しにくいのが多い。
まあ理解出来る出来ないに関わらず一冊持っとくのは良いと思うよ。

481:デフォルトの名無しさん
07/04/21 21:15:36
こういうのには盛り上がるんだなw

482:デフォルトの名無しさん
07/04/21 21:18:22
ほら、宗教の人だから自作自演で信者獲得したフリしないと気が済まないんだろ

483:デフォルトの名無しさん
07/04/27 11:52:06
GoF本を今時会社の机にこれ見よがしに置いてあるの見ると笑える

484:デフォルトの名無しさん
07/04/27 14:49:27
キチガイって飽きないの?

485:デフォルトの名無しさん
07/04/29 00:50:15
>>484
自問自答は黙って答出せ

486:デフォルトの名無しさん
07/05/18 15:28:15
ここのObserverパターンはわかりやすかった。
URLリンク(goodjob.boy.jp)

487:デフォルトの名無しさん
07/06/18 21:21:41
アーキテクチャパターンの質問で悪いんだけど、
MVCパターンにおいて、
「押されたボタンに応じて新しいサブWindowをオープンする作業」のような、
Window遷移を管理する人(実現する人)って誰になるの?

Model? View?

Window遷移もアプリケーションの中核処理になるから、
Modelの責務の範囲内なのかなとも思うんだけど、、実際どうなの?

488:デフォルトの名無しさん
07/06/26 23:59:02
どーでもねーよ

489:デフォルトの名無しさん
07/07/09 11:31:18
>>487
画面の制御なんてモロにViewだと思うんだけど。

490:デフォルトの名無しさん
07/07/09 22:41:24
UIモデルだな

491:3年前
07/07/11 11:24:49
Domain-Driven Design
スレリンク(prog板)

1 名前: 仕様書無しさん 投稿日: 04/03/25 02:38
 ドメイン駆動型デザインとは何か?

 Download draft of book from
 URLリンク(www.domaindrivendesign.org)
 URLリンク(www.domaindrivendesign.org)


492:そして現在
07/07/11 11:26:36
Domain-Driven Designのエッセンス

「ドメインモデリング」は、アプリケーション開発において最も重要な部分だとされています。
しかしその割には、フレームワークの使い方やアーキテクチャの設計方法など技術に関す
る解説書はたくさんあるものの、ドメインモデリングそのものを扱った書籍はほとんど無か
ったと言ってもいいでしょう。 Eric Evansの『Domain-Driven Design』(以降DDD)は、「ソフト
ウェアの真の複雑さに挑戦する」という副題からも分かるように、ドメインモデリングに正面
から取り組んだ待望の書籍です。

DDDは、海外では非常に評判の高い書籍です。本書の出版前からMartin Fowler氏により
「期待できる内容だ」と推薦されていたり、GoFの1人であるRalph Johnson氏は自身のブロ
グで本書を「4、5回は読み直した」と賛辞を送っています。Spring Frameworkの開発者Rod
Johnson氏も、最近のプレゼンテーションでDDDを紹介しながら、「Java EE開発者がこれ
から進むべき道はリッチなドメインモデルだ」と発表しています。また、MDAツールSculptor
のように、DDDを積極的に採用したツールやフレームワークも登場しつつあります。

しかし、日本では翻訳書がいまだに出版されていないこともあり、本書の出版から3年近く
経った今でも、まだまだ一部の通の人たちにしか広まっていないように筆者には思われます。
また、原書を読まれた方の中からも「本が分厚すぎて読みきれない・・・」という嘆きの声も
聞かれます(DDD難民という言葉もあるそうです)。
そこで本連載では、全3回に分けて、DDDの全貌を簡潔に紹介してみたいと思います。

DDDはタイトルからは一見分かりにくいのですが、いわゆるパターン本の1つです。
しかし、DDDは全体が読み物の体裁で編まれているため、パターンカタログが読み物から
独立しているもの(『デザインパターン』『J2EEパターン』『エンタープライズアプリケーション
アーキテクチャパターン』など)に比べ、パターンの閲覧性は良くありません。本連載では、
すでに一度読破された方にも有用な資料となるように、パターンカタログとしてDDDを再構成
してみます。


493:デフォルトの名無しさん
07/07/11 19:11:44
へー

494:デフォルトの名無しさん
07/10/08 17:41:42
ここって何も知らん人でも書いていいんだろうか・・・

一つのパターンを適用、っつーか使うっていうのなら何とかできるんだけど、複数のパターンを組み合わせるとなるといきなり手が止まる・・・
デザインパターンはいいコードを書いていれば自然に適用されている物、っていうことなの・・・?

495:デフォルトの名無しさん
07/10/08 18:57:21
一つ使うも複数使うも難易度に差はないだろ
理解しないでサンプルコード改変してるレベルと見える

496:デフォルトの名無しさん
07/10/10 23:46:07
デザインパターンって、「組み合わせて」使うような例ってほとんどないんじゃないかな。

一つのモジュールの別々の箇所で複数のデザインパターンを併用することはよくあるけどねー。
Java のクラスライブラリがいい例。

497:デフォルトの名無しさん
07/10/31 00:50:37
難しいことはいいからデザパタって
ホントに役に立つのかどうか教えろよ

498:デフォルトの名無しさん
07/10/31 00:51:49
>>497
OOPを一から自分で設計するのは骨が折れるぞ
バグも紛れ込むし

499:デフォルトの名無しさん
07/10/31 00:55:39
お前に使いこなせねえよバーカ

500:デフォルトの名無しさん
07/10/31 00:55:43
>>497
仕事なら役に立つよ
一単語だけで意図が伝わる

501:デフォルトの名無しさん
07/10/31 00:58:01
>>499
うるせーハナクソ

502:デフォルトの名無しさん
07/10/31 01:16:18
>>497
自分のそれまでの経験とセンスだけで、
後々のメンテとかになるべく困らないような
設計するのは難しいから、頭のいい先人たちが
編み出した有用なパターンを知っておいた方が楽。
ていうか知らないとかなり大変。

503:デフォルトの名無しさん
07/10/31 01:23:01
>>498

かなりできる人間が過半数超えてれば使えるし、
超えて無いとロスの方がでかい。

504:デフォルトの名無しさん
07/11/08 11:28:46
C++でのcrtpとか言語毎に形成されたイディオム的なパターンは実用性も高いし、初心者にも分かりやすいと思う
結局言語の所まで落とさないと使えないしね
というかC++だとそういうidiom使わないとたちどころに言語になるし

GoFで紹介されてる各パターンは役に立たないけど
そこで使われる考え方っていうのは言語ローカルなイディオムを理解するのに役立つかなぁと思ったけど、
もう少し勉強が進んだらまた違う感想になる気がする

505:デフォルトの名無しさん
07/11/14 02:08:15
デザインパターンを使わずにスマートに書く方法とかって
どんな感じなんになるんでしょうね?

たとえば、うどんをそばを作る場合なんかはほとんど
工程は一緒なのでテンプレートメソッドに使うんだろうけど

みなさんならどうやって書きますか?
ふと考えるといろいろあるけどどれもいまいちな気が。

1どんぶり用意
2うどんかそばを入れる
3だしをそそぐ

506:デフォルトの名無しさん
07/11/14 03:04:16
GoFが役に立たないとか、デザインパターンを使わずにスマートに書くとか・・・学生さんかね?

507:デフォルトの名無しさん
07/11/14 08:14:51
>>506
なんだか継承になれすぎて使わないパターンがあまりおもいつかなかったもので使わなかったらどうだろうかと思ったんですけど。

508:デフォルトの名無しさん
07/11/14 12:22:47
>>505
昔は仕様書を元に上から下へ逐次式に書いたものだよ。
仕様書がすべて、はじめに機能をすべて洗い出せることこそ能力。

これに慣れたままSEになり30代を迎えると、もう補正が効かない。

あと、現場でやっている人は、GOFどうこうを意識している人はあまりいないとおもう。

509:デフォルトの名無しさん
07/11/15 02:57:13
>>508
>これに慣れたままSEになり30代を迎えると、もう補正が効かない。

そういう人を一般的に才能がないという。
勉強する意欲がない人はいくら若くてもダメ。
転職するならお早めに。


510:デフォルトの名無しさん
07/11/15 03:47:08
>>508
ちょっと前にやったプロジェクトで、GOFに死ぬほど拘ってる
プロジェクトリーダーが居て困ったことがあるな。

最近、GOFを勉強したらしく、なんか頭がすごく良くなったカン違い
してるみたいで、設計がGOFのどれかのパターンになってないと、
全部NGにされて、直すのに苦労したよ・・・

511:デフォルトの名無しさん
07/11/15 03:50:05
>>508
GoFすら意識してなくて機能をイメージできるものか?出来てるつもりじゃないか?

512:デフォルトの名無しさん
07/11/15 09:22:08
設計なんて茨の道さ。
もんどりうってじたばたして、
痛い思いしながらGoFにしがみついたり、
手放したり、またGoF読み直したり、
もんどりうったり、じたばたしたり、
GoF読み直してピンときてみたり、
こなかったり、もんどりうって、ピンときたり。

513:デフォルトの名無しさん
07/11/15 13:56:27
全ての設計要素は何らかの秩序の上に存在すべき
だが設計要素や立脚する秩序をすべて表現する必要はないってこった
達人の書いたオプソのコード読んでも、凄さが伝わりくい理由がそこにある気がする

514:デフォルトの名無しさん
07/11/15 14:39:57
>>512
オッパイ揉んでピンときたり
が抜けてね?

515:デフォルトの名無しさん
07/12/28 16:51:17
ソースコードの見た目がかっこ良くなるので使ってます

516:デフォルトの名無しさん
08/01/07 21:48:54
開発環境のバージョンによって、含まれるライブラリが違うため、
どちらのバージョンでも動くように、実装を切り替えるということがしたいのです。
XMLのラッパーライブラリのエンジンの実装を切り替える、というようなことです。

Strategyパターンを使うのがよいのでしょうか?
最初は、Decoratorパターンと区別がつかなかったのですが、
GOF本のDecoratorのところにあるように、

・中身を取り換えるのが、Strategyで、
・外側を取り換えるのが、Decorator
ということで、

中のエンジンを取り換えるのは、Strategyパターンということでしょうか?

517:デフォルトの名無しさん
08/01/07 22:43:21
>516
あんまりパターンの名前にとらわれずにしたほうがいいと思われ。

518:デフォルトの名無しさん
08/01/08 00:19:40
うむ。
とりあえず作りたいように作って、似たパターンがあったらそれに合わせていく方向で。

519:デフォルトの名無しさん
08/01/09 03:33:32
>>517-518
ありがとう
過去レスででてたけど、作ってみてリファクタリングの時に考える方法やってみる

520:デフォルトの名無しさん
08/02/06 20:05:11
// Hoge.h
#ifndef HOGE_H
#define HOGE_H
class Hoge {
public:
static Hoge* New();
virtual void Foo() = 0;
virtual ~Hoge() { }
};
#endif

// Hoge.cpp
#include "Hoge.h"
#include <iostream>
class Hoge_ : public Hoge {
public:
virtual void Foo() { std::cout << "Hoge::Foo" << std::endl; }
};
Hoge* Hoge::New() {
return new Hoge_();
}

// main.cpp
#include "Hoge.h"
#include <boost/scoped_ptr.hpp>
int main() {
boost::scoped_ptr<Hoge> hoge(Hoge::New());
hoge->Foo();
}

こうやって実装を pimpl より隠蔽してるソースを見たんだけど、
このデザパタの名前って何?

521:デフォルトの名無しさん
08/02/06 23:46:55
これっしょ?よく見る普通のインターフェイスじゃないか。
URLリンク(boost.cppll.jp)

522:デフォルトの名無しさん
08/02/07 00:21:09
「~パターン」 とかの名前がついてるわけではないのね。

523:デフォルトの名無しさん
08/02/07 03:10:32
strategyじゃね

524:デフォルトの名無しさん
08/02/07 07:40:40
派生クラスを1つしか作らないこと前提で目的も違うから
strategy じゃないな。

525:デフォルトの名無しさん
08/02/14 22:04:23
質問させてください
Compositeパターンで作られたクラスに
インターフェースの拡張を施した新しいクラスを作りたいときは
Bridgeパターンを使いますか?

526:デフォルトの名無しさん
08/02/15 20:35:57
自己解決しました

527:デフォルトの名無しさん
08/02/16 03:47:22
自己解決したらできれば、解決法を書いていきましょう
後で見た人の参考になりますよ

528:デフォルトの名無しさん
08/02/27 09:21:02
フラグを1ビットではなくカウンターで持っておき、ON扱いを1より大きい
値(仮にA)とします。ONしたい状況ではいきなりAを代入するのではなく
1ずつ足していき、OFFしたい状況ではすぐにゼロを代入します。

こういう、ONにするときだけショックアブソーバー付きな動作をする
フラグはデザパタではどういう名前が付けられてますか?

529:デフォルトの名無しさん
08/02/27 13:24:07
自家発電しました

530:デフォルトの名無しさん
08/02/27 19:14:49
>>525-526
自己解決パターン

531:デフォルトの名無しさん
08/02/28 01:50:40
アンチパターンだな

532:デフォルトの名無しさん
08/03/02 18:10:25
最近デザインパターンを勉強しだしたんですが
GoFの23個のうち2~3個組み合わせて何か簡単なものを作るとしたら
どんなものが思い浮かびますか?

533:デフォルトの名無しさん
08/03/02 18:27:07
STL

534:デフォルトの名無しさん
08/03/02 18:29:26
Template Method との組み合わせは結構考えられるかと。

535:デフォルトの名無しさん
08/03/02 22:56:35
コマンドパターンとなんかで、
GUIツールのアンドゥの練習

536:デフォルトの名無しさん
08/03/02 22:56:57
やっぱり、アンドゥ、リドゥの練習にしといて

537:デフォルトの名無しさん
08/03/02 23:13:23
Memento パターンと Command パターンの複合か。

538:デフォルトの名無しさん
08/03/03 01:22:59
わかりました
やってみます

539:デフォルトの名無しさん
08/03/04 18:26:09
c++です
DecoratorパターンでConcrete ComponentとDecoratorを区別して
Concrete Componentの型を知る方法はdynamic_castを使うしかないですか?

540:デフォルトの名無しさん
08/03/04 18:53:21
>>539
型を知って何をするかによって方法が変わる気が。
RTTI(dynamic_castもその1つ)を使うか、Concrete Componentのメンバに型を示すIDのようなものを用意しておくか。
そもそもスレ違い。

541:デフォルトの名無しさん
08/05/09 11:50:43
鈴木高弘スレw

542:デフォルトの名無しさん
08/05/11 05:10:51
ゲーム作ろうと思い、デザインパターンの勉強をしてるんですが
Singletonをどんな風に使うのか今一ピントきません。

Singletonじゃないと困る場合。
Singletonだと助かる場合。
出来たら例を示して貰えないでしょうか。

543:デフォルトの名無しさん
08/05/11 07:57:27
>>542
ぜひ、こちらへどうぞ

ゲームにおけるデータ構造・クラス設計・パターン
スレリンク(gamedev板)

544:デフォルトの名無しさん
08/05/11 16:39:33
あちらで聞いてみます

545:デフォルトの名無しさん
08/05/11 17:47:41
やる夫がデザインパターンをやるようです
URLリンク(mojalog.com)


546:デフォルトの名無しさん
08/05/11 18:06:29
>>545
やる夫wwwwめちゃめちゃ笑った

547:デフォルトの名無しさん
08/05/11 18:15:14
>>545
デザインパターンの考え方が分かりやすくて助かりました。

548:デフォルトの名無しさん
08/05/11 19:23:44
AA入ってるのって、一見とっつきやすそうだが…、
読みにくくもあったり…しかし微笑ましいのだけは確か。

549:デフォルトの名無しさん
08/05/11 21:11:22
例自体は具体的で読みやすいんじゃないか?
デザパタ本て(全部とは言わないが)ほとんどが
説明のための説明みたいな本になってるし。

550:デフォルトの名無しさん
08/05/12 02:47:40
シンプルファクトリーって始めて知った
ファクトリメソッドとアブストラクトファクトリしか知らなかった
デザインパターン的には常識なの?



551:デフォルトの名無しさん
08/05/12 02:56:07
この手のものは先に名付けたもん勝ちだから
あまり仔細にこだわろうとするな。

> ファクトリメソッドとアブストラクトファクトリしか知らなかった
知ったかどうかよりも理解できたかどうかが大事なんだが。

552:デフォルトの名無しさん
08/05/12 16:39:49
URLリンク(marupeke296.com)

個人的にここのデザインパターンの解説がゲームプログラミングを例にしているせいか
わかりやすいんだが、スレ住人的にはどう?


553:デフォルトの名無しさん
08/05/12 16:59:44
>>552
わかりやすいし、筆者の理解度は高いと思う。
自分の言葉で言いなおしてるところで、
的が外れていないので高感度アップ。

Abstract Factory 一塊のオブジェクト群を沢山の種類用意する

は、恥ずかしながら今までみたどの解説よりスッとくる一文だった。

554:デフォルトの名無しさん
08/05/12 22:57:03
例というなら、GoFの元ネタはウィジェットや言語の実装で現われたパターンだから、
自分でウィジェットや言語を書けば何を言ってるのかすぐわかる

555:デフォルトの名無しさん
08/05/12 23:10:08
うじぇー奴

556:デフォルトの名無しさん
08/05/13 00:53:16
>>552
FlyWeightってこのページで書かれているような感じなの?

557:デフォルトの名無しさん
08/05/13 09:31:42
zsh line editorのwidgetでも使えますか!?

558:デフォルトの名無しさん
08/06/14 11:28:21
実践UML 第3版 オブジェクト指向分析設計と反復型開発入門
URLリンク(www.amazon.co.jp)

この本とかどうだろうね?まだ自分は読み始めだけど。

559:デフォルトの名無しさん
08/06/14 19:02:26
だったら読み終わったときに評価書いてくれ

560:デフォルトの名無しさん
08/06/18 18:46:30
MVCモデルについて質問です。

javaであればModelでは描画するメソッドを一切実装せず、描画メソッドについてはすべてViewで実装するという事ですか?
例えば、Modelのオブジェクトにdrawメソッドをdelegateしたい場合などもあると思いますが、
そういう時もViewまで先送りにした方がいいですか?

561:デフォルトの名無しさん
08/06/19 00:31:36
描画はモデルじゃね?

562:デフォルトの名無しさん
08/06/19 02:05:46
>Modelのオブジェクトにdrawメソッドをdelegateしたい場合などもあると思います
例えばどんな時?

デザパタの本にありがちな、
Shape インタフェースに draw メソッドがあって
Circle でも Triangle でも draw 呼べば片付きますよ、
的な話って、いかにも説明のための説明って気がしてならん。

563:デフォルトの名無しさん
08/06/19 02:20:03
ここまで一切コントローラの話題が無い件

564:デフォルトの名無しさん
08/06/19 07:30:42
>>562
まさにそういう時。
アルゴリズムでdraw可能なオブジェクトをいくつかはじきだす。
その時にそいつにdrawメソッドを持たせておいた方が都合がいいのでそうしているが、
癒着してるようで気がかり。

565:デフォルトの名無しさん
08/06/19 19:37:43
ほれ、答えだ
URLリンク(www.fujigoko.tv)

566:デフォルトの名無しさん
08/06/19 20:07:01
長い;;

567:デフォルトの名無しさん
08/06/20 23:52:54
>>565
当たり前すぎるくらいに当たり前のこと書いてるな。
でも、この当たり前が理解できてないやつが殆どだ。

モデル自体が保存メソッド持ってるフレームワーク見せられて
「なんでこんな設計なの?」「便利だから」
意味不明の回答で泣きそうになった。

次の会社でも探すか。

568:デフォルトの名無しさん
08/06/21 00:25:48
データモデルと永続化は別か,そうかそうか

569:デフォルトの名無しさん
08/06/21 00:50:45
>>567
あたり前田のクラッカーってどうなったんだろう?

570:デフォルトの名無しさん
08/06/21 09:28:30
> モデル自体が保存メソッド持ってるフレームワーク見せられて

普通じゃん。

571:デフォルトの名無しさん
08/06/21 09:42:35
>>567
むしろ保存とか読み込んで再構築とかいう手間を見せ付けてはいけない

572:デフォルトの名無しさん
08/06/21 13:33:10
シリアライズ機能くらい普通じゃん

573:デフォルトの名無しさん
08/06/21 16:01:39
シリアライズを提供することと保存の主体であることは別じゃね?

574:デフォルトの名無しさん
08/06/21 16:06:23
Save(IOutputStream* stream)
Load(IInputStream* stream)
みたいに外部に保存主体があるわけじゃなくて、
まさか内部に保存主体があるのか?

575:デフォルトの名無しさん
08/06/21 16:12:35
dbの話じゃないの?

576:デフォルトの名無しさん
08/06/21 16:23:23
>>574
保存主体ってなんですか><;;

# Save(IOutputStream* stream)
これだと「何を」みたいな目的語が全く存在しない

577:デフォルトの名無しさん
08/06/21 18:08:59
.NET Frameworkだと、シリアライザクラスに分けてあるね。

578:デフォルトの名無しさん
08/06/21 18:15:05
クラスを分けるのは便利な面もあるけど、
保存すべき情報は外部に見せることのできる情報ばかりではないからね。
両方できるようにしてどっちにするか選択できるのが一番良い。

579:デフォルトの名無しさん
08/06/22 09:05:38
Save(PersistContext pContext)とかになってPersistContextの実装しだいでDBにもXMLにも保存できるのが吉かと。

580:デフォルトの名無しさん
08/07/31 21:05:45
>>552のAbstract Factoryの頁を読んでみたんだけど、
とても違和感を感じる、というよりはっきり言って全く間違っているように思うのだが
これは俺の方が間違ってる?

俺がおかしいなと思った点は、

(1) void Create( AbstractWeapons *AbsWep)みたいな"具体的な"値を引数で
  取るメソッドのどこが"Abstract"(抽象)なのか?
  思うに、この著者は"Abstract"の意味を取り違えているのではないか?
  確かに「武器」はAbstractWeapons という型に抽象化されてはいるが、
  Abstract Factoryの"Abstract"ってそういう抽象化のことを指しているんじゃないのでは?

(2) 1とも関係するが、著者は自分で『オブジェクト内部で作ってもらった方が、
  外部の人は渡すべき武器について知らなくて良いので楽になる』と(もっともな)事を言っているのに
  できたコードは全然そうなってない。

581:デフォルトの名無しさん
08/07/31 22:20:23
>>580
そういう疑問を持ったときは実際にプログラミングするのが早い

582:デフォルトの名無しさん
08/08/04 17:36:15
>>580
(1)AbstractなのはMacheneでもWeaponでも無くFactory、
void Machine::CreateはConcreteなWeaponもConcreteなFactoryも知らない

(2)Machineの内部でAbstractなFactoryがWeaponを生成している
実際に生成されているWeaponsを知っているのはConcreteなFactoryのみいう言う状態

と捉えれば別にその2点は間違ってないと思うけど…

#LispとかMLでサンプルを書いたOOP系の本が見たい

583:デフォルトの名無しさん
08/08/07 00:49:16
まぁWeaponをインタフェース名にしろと思ったな。

AbstractWeaponsImpl みたいな感じで
なんらかの共通処理を持った実装クラス名にすることはあるんだが
インタフェース名にAbstractcなんやらーってあんまりしないなあ。

宗教だけど。

584:デフォルトの名無しさん
08/09/08 11:09:58
あげ

585:デフォルトの名無しさん
08/09/08 14:08:20
読み始めたけど、道のりなげぇぇぇぇ。

586:デフォルトの名無しさん
08/09/08 20:11:30
或曰: お仕事
URLリンク(www.issei.org)

こちらのサンプルにあるような、
依存部分だけをインターフェスのContextとして取り出し、
実行時に引数にContextを渡して依存を解決するような場合の
パターン名は何かありますでしょうか?

もし、ない場合適当なパターン名としてどんなものがありますでしょうか?

587:デフォルトの名無しさん
08/09/09 01:27:27
Context と Context のユーザーが
互いにインスタンス参照をもちあう作りが
ものすごく不吉な感じするんだけど
そのあたりどうなんだろう。

588:デフォルトの名無しさん
08/09/09 09:44:23
Head Firstの本ってどう?


589:デフォルトの名無しさん
08/09/09 19:11:26
abstract Factoryパターンと、Factory Methodパターンの違いについて述べよ。
また、ファクトリパターンがどういう場合に有効なのか知るところを述べよ。
生成メソッド(例えばファイル読み込みなど)を生成すべきメソッドに持たせるとどのような不都合が起こるのかを述べよ。

590:デフォルトの名無しさん
08/09/09 20:23:18
>>588
俺持ってるけど良いよ
ホントに重要なパターンだけを優先順位を付けて展開してる、
最初は秘術的なobserverパターンから初めてるのも好感できる
observerはstrutsやMVC関連で良く使われるパターンだよね

591:デフォルトの名無しさん
08/09/10 00:47:57
>>590
でもピザパターンとかが無いからなぁ・・・
入門としては良書だけど、見通しが利かないってとこがちょっと。

592:デフォルトの名無しさん
08/09/10 17:36:05
Head Firstで基礎を勉強したあとの補強にいいのはGoF本?

593:デフォルトの名無しさん
08/09/10 20:58:10
Amazon.co.jp: Head Firstデザインパターン―頭とからだで覚えるデザインパターンの基本: エリック フリーマン, キャシー シエラ, エリザベス フリーマン, バート ベイツ, Eric Freeman, Kathy Sierra, Elisabeth Freeman, Bert Bates, 佐藤 直生, 木下 哲也, 福龍興業: 本
URLリンク(www.amazon.co.jp)
URLリンク(images-jp.amazon.com)

これですか?
高すぎるんですがwww

594:デフォルトの名無しさん
08/09/10 21:00:44
>>593
貧乏自慢すんなよ

595:デフォルトの名無しさん
08/09/13 16:16:55
「デザインパターンによるJava実践プログラミング」っていう本がぱっと見GoF本に似てる感じがしたんだけど、
これを読めばGoF本読まなくっていいかな?

596:デフォルトの名無しさん
08/09/13 23:48:47
どれ読んでも難解だよな
ゲームで説明しているページが一番分かりやすい。
1個だけ間違ってるのあるけど

597:デフォルトの名無しさん
08/09/14 04:40:51
GoFをまるぺけのところと照らし合せながら読むのがいいと思う

598:デフォルトの名無しさん
08/09/14 10:29:03
Head Firstシリーズのデザパタ本を読んだ後に同じシリーズのオブジェクト指向設計の本
をちょっと立ち読みしてみたら内容がかぶってる気がしたんだけど、
前者を読んだ後に後者を読む価値はあるかな?
両方読んだ人いたら教えて。

599:デフォルトの名無しさん
08/09/21 15:39:38
stateとstrategyの違いを教えてください。

600:デフォルトの名無しさん
08/09/21 17:17:42
実装クラスで表現されたモノによって呼び方が変わるだけで、構造上の違いはないよ。

601:デフォルトの名無しさん
08/09/22 06:22:50
Gofって所謂カタログ本だと思ってた。

>>598
ある

602:デフォルトの名無しさん
08/09/28 10:00:51
過疎どすな

603:デフォルトの名無しさん
08/09/28 23:50:39
デザパタてはやり過ぎない不思議

604:デフォルトの名無しさん
08/10/02 15:47:16
渇祖

605:デフォルトの名無しさん
08/10/05 14:25:10
>>599
「目的が違う」ってことでいいのかな?
stateはアルゴリズムを動的に切り替えられることに意義があり、
strategyはアルゴリズムを分離することに意義がある
とか。

606:デフォルトの名無しさん
08/10/05 16:08:42
stateの方、それ違くね?

607:デフォルトの名無しさん
08/10/05 16:29:00
The differences between Strategy pattern and State pattern Five ’s Weblog
URLリンク(powerdream5.wordpress.com)

The difference between the two GOF patterns "Strategy" and "State"
URLリンク(www.c-sharpcorner.com)

散々議論されてきた歴史があるのでそれを参考にしたらいいと思うよ


608:デフォルトの名無しさん
08/10/08 23:54:54
Compositeってやつのみっつのくらすをひとつのクラスにすることは出来るの?

609:デフォルトの名無しさん
08/10/09 12:31:35
っていうか、「何でお前が勝手にルール決めてんの?つか誰?」って感じしない?



610:デフォルトの名無しさん
08/10/09 16:31:30
>>608
XMLとか

611:デフォルトの名無しさん
08/10/13 23:36:50
>>609
OOPのノウハウを共有するために呼び名を決めたほうが良いね、ってのが
デザインパターンの意義なのにルールも糞もあるもんか。

おまいが好きなノウハウに好きな名前を付けたけりゃ、そうすればいい。
それを共有しようとする奴は誰もいないだろうがなぁ。

612:デフォルトの名無しさん
08/11/11 15:28:48
あげ

613:デフォルトの名無しさん
08/11/12 23:42:17
まだあったか

614:デフォルトの名無しさん
08/12/16 13:36:00
あげ

615:デフォルトの名無しさん
08/12/23 01:08:25
Amazonから
「ケント・ベックの『実装パターン』、
Amazon.co.jpでお求めいただけます」
メールキタ━(゚∀゚)━!!

N瀬監修T社翻訳........orz



616:デフォルトの名無しさん
09/01/11 02:29:21
シングルトンってインスタンスが初めて呼ばれるまで本当にそのインスタンス生成されていないの?

617:デフォルトの名無しさん
09/01/11 03:20:49
初回に new しているタイプは言うまでもなく、
getInstance内でstatic変数として確保しているタイプでもそうなる。
クラスのstaticメンバ変数として作っちゃうと、mainより前に作られる。

618:デフォルトの名無しさん
09/01/11 07:42:09
そもそも
シングルトンってインスタンス誕生の瞬間までカバーしてたっけ?

619:デフォルトの名無しさん
09/01/11 12:47:51
>>617
それはプログラミング言語によって異なるだろう。

620:デフォルトの名無しさん
09/01/11 13:19:12
>>618
シングルトンは初めて使う時に生成するもんじゃないのか?

621:デフォルトの名無しさん
09/01/11 13:22:04
明日は成人の日か

622:デフォルトの名無しさん
09/01/11 14:29:57
シングルトンて北朝鮮放送の読み方のように言えるよね

623:デフォルトの名無しさん
09/01/11 14:43:18
싱 글똔 さんか。

624:  
09/01/18 21:54:19
デザインパターンじゃないんだけど実装パターンに書かれてる
Pluggable Selector てのがいまいちわかりません。例に出てくるJUnitもよく知らないし。
誰か教えてください。

625:デフォルトの名無しさん
09/01/18 22:02:29
シングルトンは任意の実行コンテキスト内でインスタンスの個数を制限するだけで、
いつインスタンス化するかはお好きに。
リファレンスカウントがなければ解放してもいいし。

626:デフォルトの名無しさん
09/01/19 09:13:22
>>624
どこに書かれていて、何が分からないのか分からない。

627:デフォルトの名無しさん
09/01/19 19:08:29
626が全否定

628:デフォルトの名無しさん
09/01/22 02:08:22
すいません。アドバイスください。

車CarContextの走行状態をStateパターンで
CarRunState, CarHighwayRunState, CarIdleStateと設定して、
Stateの派生クラス内で状態遷移の判定を行っているとします

ここで予想外に水陸両用車ShipCarContextが増えて
CarSwimStateの状態を増やそうとした場合に、
今まで派生クラス内で行っていた状態遷移の判定を
CarContext、ShipCarContext内で行うべきでしょうか?

CarContextが状態遷移の判定ルーチンで膨れあがるのが嫌で、
State派生クラスで状態遷移の判定を行っていました
諦めてShipCarContext用の状態判定Stateクラスを一から作り直すか、
CarContext内で状態遷移の判定を行うか悩んでいます
定石があれば教えていただきたいのですが

629:デフォルトの名無しさん
09/01/22 20:56:59
>>628
おそらく定石からは外れるだろうけど、StateManagerみたいな管理クラスを間に挟んで、そこで状態遷移を一元管理させてる。

GOFのStateパターンに従った場合、OOぽいアプローチにできるが、遷移の流れを把握しにくくなるような気がする。

また状態遷移も、今の状態、次の状態、遷移時のアクションが分かれば済むようなもの、まれにガード条件、分岐条件が加わるような場合しか使ってこなかったので、これらの情報を設定ファイルに吐き出して、実行時に状態遷移マネージャに読み込ませてる。

おかげで状態遷移はそれほど膨れ上がらないが、アクションは1~数クラスにまとめてしまうので、膨れ上がるね。

630:デフォルトの名無しさん
09/01/22 21:05:31
FactoryMethodパターンとかAbstractFactoryパターンって解放のことまで考えられてないけど、
解放ってどうするの?


631:デフォルトの名無しさん
09/01/22 21:30:19
>>630
所有権を持っているオブジェクトが破棄してあげればいいんじゃね。
通常だと、Factoryにより生成されたオブジェクトを保持してるオブジェクト

おそらく問題としていることは、複数のオブジェクトでFactoryにより生成されたオブジェクトを保持してる場合を気にしているものと思われる。

所有状態が複雑になるため、このような状態は極力避けるべきだと思うが、どうしても複数で保持する必要があるのなら、参照をコピーした際に所有権も移動させるか、または参照カウンタを実装し、最後まで保持してるオブジェクトに解放を行わせるかのどちらかかと。


632:デフォルトの名無しさん
09/01/22 22:59:32
GoF以外のデザインパターンってありますよね?
ここのサイトでけっこうまとめられてるようですが。
URLリンク(www.tom.sfc.keio.ac.jp)

そういうのっていろんな人が好き勝手に作ってるものなんですか?
一つの本にまとめられていたりとかはしないんですかね


633:628
09/01/23 02:45:12
>>629
ありがとうございます。参考になりました。必ずしもGOFってわけでもないですよね

>GOFのStateパターンに従った場合、OOぽいアプローチにできるが、遷移の流れを把握しにくくなるような気がする。
たしかに把握しにくいです。
とりあえず今回は、それぞれのStateに分散した処理をそのまま使い回したいので、
(泥沼な気もしますが)CarRunStateを例にとると
   void CarRunState::update(Context * context);
で読み込んだContextからCarContextにダウンキャスト可能なら、CarContextの遷移判定を行い、
ShipCarContextにダウンキャスト可能なら、ShipCarContextの遷移判定を行うように処理を分けようと思います

CarContextとShipCarContextで判定処理が混在するので、CarRunStateの処理があまりに膨れるようなら、
ダウンキャストではなく、CarRunStateから、CarRunStateForCarとCarRunStateForShipCar
に分けるという方針で行こうと思います

それやるくらいなら・・等、ご意見を頂ければとてもありがたいです

634:デフォルトの名無しさん
09/01/24 20:58:05
デザインパターンなんてもんが存在してるってことは、オブジェクト指向はまだまだってことでは?と言ってみるテスト

635:デフォルトの名無しさん
09/01/24 20:59:29
単なる護符だよ

636:デフォルトの名無しさん
09/01/24 21:38:53
>>634
逆だよ デザインパターンが48個になったら完成

637:デフォルトの名無しさん
09/01/24 22:10:55
>>636
kwsk

638:デフォルトの名無しさん
09/01/24 22:17:29
48手だろ

639:デフォルトの名無しさん
09/01/25 00:17:36
48のデザインパターンと52の関節技ですねわかります

640:デフォルトの名無しさん
09/01/25 04:38:04
四苦八苦、4x9+8x9=108
で人間の煩悩の数だけでデザインパターンがあるのではないか

641:デフォルトの名無しさん
09/01/25 06:35:53
>>632
結城さんのマルチスレッド編とか。
URLリンク(www.amazon.co.jp)

642:デフォルトの名無しさん
09/02/09 18:03:46
確認なんだけどハッシュはイテレータ作れないよね?

643:デフォルトの名無しさん
09/02/09 19:15:02
要素に順番にアクセスできるのがイテレータだと思うんだけど、
ハッシュの場合のイテレータの『順番』ってのはどういうのを考えてるの?



644:デフォルトの名無しさん
09/02/09 22:10:20
ハッシュド・ビーフが食いたくなった

645:デフォルトの名無しさん
09/02/10 00:00:27
>>642
Map<K,V> m を iterate したいってことか?

for (Map.Entry<K,V> e : m.entrySet()) { K k = e.getKey(); V v = e.getValue(); }
for (K k : m.keySet()) { V v = m.getValue(k); }

用途に応じて好きな方を使え。
そういう意味の質問でないならお前の日本語が悪いから知らん

646:デフォルトの名無しさん
09/02/10 01:18:54
なんだその暗号は

647:デフォルトの名無しさん
09/02/10 01:44:32
アルファがベータをカッパらったらイプシロンした。なぜだろう

648:デフォルトの名無しさん
09/02/10 10:02:27
range based for loop

649:デフォルトの名無しさん
09/02/11 00:47:28
Uncopyableパターンってどういうときに使ってますか?


650:デフォルトの名無しさん
09/02/11 01:03:38
あ、GetInstanceで参照を返すようなSingletonオブジェクトの場合は
受け取り側の変数に参照ではなく実体の変数を使われないようにするために使えますね


651:デフォルトの名無しさん
09/02/11 01:39:42
>>649
面倒くさくてポインタそのまま扱ってるクラスが大量に扱われるときに
コピーコンストラクタを作らずに入れておくとか。

652:デフォルトの名無しさん
09/02/11 05:39:11
>>650 わからん
文を書き直して

653:デフォルトの名無しさん
09/02/11 07:14:15
class CSomethingManager
{
public :
CSomethingManager &GetInstance(){
static CSomethingManager instance;
return instance;
}

private :
CSomethingManager(){}
~CSomethingManager(){}
};

//CSomethingManager &instance = CSomethingManager::GetInstance();
CSomethingManager instance = CSomethingManager::GetInstance();
instance.DoSomething();

654:デフォルトの名無しさん
09/02/11 07:17:09
ユーザーがついうっかり(もしくは何も考えずに)、&を書き忘れてしまうようなことが起こらないようにするために


655:デフォルトの名無しさん
09/02/11 07:18:02
あ、つーかSingletonでコピーコンストラクタを禁止するから関係ないのかw


656:デフォルトの名無しさん
09/02/11 07:25:47
>あ、つーかSingletonでコピーコンストラクタを禁止するから関係ないのかw

スマソ。日本語おかしすぎた
つまりUncopyableパターンでSingletonオブジェクトのコピーを出来なくする使い方があると思ったんだけど、
そもそもSingleton自体に(コピーコンストラクタをprivateで定義することで)そういう考え方が備わってるから
意味ないと気付いた


657:デフォルトの名無しさん
09/02/20 00:33:02
10個位のクラスに、同じような処理を行う長~い1個のメソッド(1000STEP超)があるのですが、
これを今度共通化するなりしてまとめようという話になり、うまくデザインパターンが利用できないかなと考えています。
(デザインパターンに当てはめる必要はないのですが・・・)

クラスA
処理1
処理2
処理3

クラスB
処理1
処理3

クラスC
処理2
処理3

とまぁ、同じような処理を行っているので、
共通クラス
処理1
処理2
処理3
と記述して、呼び出し元のクラスで通る処理を切り替えられないかなと思っているのですが、
こんな用件に対応するデザインパターンてございます?
AbstractFactoryやFactoryMethod、Templeteなどが使えないかなと思うのですが、
結局それぞれのクラスから共通している処理を抜き出しても元々のクラスと同じ数だけクラスが増えることになりそうな気がして、
それだと単に処理抜き出してクラス作っただけで終わりそうなので・・・。
デザインパターンの理解が出来てないのかとも思うので、何かやりようがあったらどなたかご教授ください。


658:デフォルトの名無しさん
09/02/20 07:16:10
A、B、Cの処理ABCが全て同じならクラスは一個でいいだろ
クラス
処理A()
処理B()
処理C()

クラス a = new クラス()
クラス b = new クラス()
クラス c = new クラス()

微妙に違うならインタフェースを作って継承するだけじゃ?
クラスA:インタフェース
クラスB:インタフェース
クラスC:インタフェース

private test(Iインタフェース t)
{
t.処理A();
t.処理B();
t.処理C();

}

659:デフォルトの名無しさん
09/02/20 10:01:15
template method

660:デフォルトの名無しさん
09/02/20 19:55:47
>>657
オレもTemplateMethodに一票

後みんな、原本の翻訳はしないの?

661:デフォルトの名無しさん
09/02/20 21:17:50
デザパタのパターン名なんてよく覚えられるな。
覚えてるやつって丸覚えしてんの?
ちゃんと意味わかって使ってる?

662:デフォルトの名無しさん
09/02/20 21:25:00
design patterns by functional programming paradigm
とかないのかな?

663:デフォルトの名無しさん
09/02/20 21:26:24
GoF 23パターンまでぐらいなら。
意味の方は、人と話すときはその都度ググってるw

664:デフォルトの名無しさん
09/02/20 21:32:47
本当によく使うのは5個くらいだから名前も覚えてる。
その他は名前聞いてもああ聞いたことあるなくらいで
後からクラス図見れば十分間に合う。
暗記力のテストじゃないんだし。

665:デフォルトの名無しさん
09/02/20 21:37:58
perlの演算子覚えるのに比べれば楽勝楽勝

666:デフォルトの名無しさん
09/02/20 22:23:28
デザパタの生まれた経緯を考えると名前で呼び合うのが自然なんだろうな。
でもなんかしっくりこない。

667:デフォルトの名無しさん
09/02/21 11:55:02
>>657
別の視点から。

処理1~3が同じ引数を持つのであれば、各処理をそれぞれ一つのクラスのメソッドとした上で、
Decoratorで積み上げる、という考え方もあると思う。
Javaや.NET系のStreamをイメージしてもらうと分かりやすいかも。

668:デフォルトの名無しさん
09/02/25 11:34:59
Decoratorで処理123を組み合わせで積み上げる場合
クラスABCを生成するためにSimpleFactoryでも用意してあげた方がいいのかな?

669:デフォルトの名無しさん
09/02/25 16:51:48
URLリンク(codepad.org)
・基底クラスにfactoryを持たせてみた
・decoratorパターンってhookだなぁと思った
・大量のdecoratorを使うときは定義にマクロを使ったらいいかも
・posthookとprehookの形にできるようにすればもっと柔軟に扱えるかもしれない

670:デフォルトの名無しさん
09/02/25 17:06:38
>>657
なんかすっごい、デザパタ以前の問題の気がw
OOPに嗜まずしてデザパタ適応は無理。

671:デフォルトの名無しさん
09/02/25 20:37:44
卑下することは無いと思うけど、別のパラダイムだよな
宣言型のプログラミングじゃなくて、動的な奴

で、こう言うのってなんて言うんだ?

672:669
09/02/25 20:53:45
ガーンこういうのdecoratorって言わないのかー
ちょっとゴフ見直してくるわ

673:デフォルトの名無しさん
09/02/25 21:02:07
>>670
たぶんOOP以前の問題だろうな
答えてる方もあやしいな、Decoratorなんて目的が違いすぎる

674:デフォルトの名無しさん
09/02/25 22:05:33
何でもかんでもデザパタ使えばいいと思ってる奴らが多そう。

675:デフォルトの名無しさん
09/02/25 22:18:18
なんでもかんでもhookを使って実装しているemacsに対してひとこと

676:デフォルトの名無しさん
09/02/25 23:16:05
>>674
オマエがそう思うならそうなんだろ オマエの頭の中では

現実は逆だ。コード設計の意図を次使う人に少しでも伝える為に
藁にもすがる思いでデザパタを入れておく

677:デフォルトの名無しさん
09/02/26 02:15:13
>>674
同感だな
無理やり導入された名ばかりのパターンは害悪でしかない
>>657に対するDecoratorがいい例だし、Templete Methodも使うべきじゃないだろう

678:デフォルトの名無しさん
09/02/26 02:27:43
静的に結合されるcommand patternのようなものを作ればいいんだな
よしやってみる

679:デフォルトの名無しさん
09/02/26 03:03:58
いや>>669が最初からDecoratorでない

もういいよw
こういう流れ知ってるからw

わざと煽らなくていいし、いいたいことはいったし

680:669
09/02/26 07:28:39
>>679
とりあえずどこがdecoratorじゃないか教えてよ

681:デフォルトの名無しさん
09/02/26 09:52:32
>>657
FactoryMethodパターンは生成に関するパターンでつよw
AbstractFactoryパターンはオブジェクト郡の生成に関するパターンでつよw

AbstractFactoryパターンを勘違いしちゃってる人が多いでつ。

682:デフォルトの名無しさん
09/02/26 10:25:05
657は、DecoratorかTemplete Methodでググって要求に合う物を使えば良いだろう


>>669はDecoratorになって無いと言うのがよく解らん
C++のobj->method()->method()の記述が何か別な意味でも持つのか?
OOP的な意味で

683:デフォルトの名無しさん
09/02/26 18:45:17
>>680
>>679は↓だからスルーするがよし
URLリンク(blog.livedoor.jp)

684:デフォルトの名無しさん
09/02/26 20:16:39
>>681
>>657はたぶん処理1~3の中にそれぞれクラスA~Cに対応した処理の分岐があると
言っているんだろう。
だからクラスA1~C3を作って、A1~A3を生成するAファクトリ……のような感じで
AbstractFactoryパターンを適用し、その際の共通の部分に対しFactoryMethodや
TempleteMethodを適用しようと考えたんだろう。考え方自体はそれほど間違ってない。

685:デフォルトの名無しさん
09/02/27 10:43:13
Factory Method パターンはインスタンス生成の抽象化を目的としているのに対して、
Abstract Factory パターンの目的はあくまでも関連するインスタンス群の生成 API の集約化である。
異なる目的を達成するための手段がたまたま似たような形となったに過ぎない。

686:デフォルトの名無しさん
09/02/28 11:57:36
俺の好きなデザパタ。ベスト3+α。

1) Mediatorパターン
 相互作用をこいつに任せると爽快。
 相互作用の記述のみに特化したクラス、
 という明白な目的を持てるのも嬉しい。

2) FactoryMethodパターン
 今でもポツポツこれ使う。
 インスタンス化をサブクラスに任せる。自由なような不自由なような。
 このパターンが好きなのは某JavaMLなどで○木さんが暴れていたのを見るのが好きだったから。

3) Observerパターン
 通知する側される側、で分けちゃうのが何よりスカッとする。

3.1) Stateパターン
 これを知ったとき、「ああ、これがOOPか…」と感動した覚えが。

687:デフォルトの名無しさん
09/02/28 12:16:18
>>686
俺も同意だな
初心者には魔法っぽく見えるのはこんなもんでしょ

ところで、SINGLETONは旨いのかな?
スコッチの話なんだが...

688:デフォルトの名無しさん
09/02/28 20:37:06
この4つは魔法っぽく見えて他は見えないのか、その差が分からないな
Observerは割と人気がありそうだけど、他は結構変わった感性な気がする

689:デフォルトの名無しさん
09/03/01 10:48:42
デザパタは初心者にとって魔法に見えるというより、
ムダなものに見えてると思う。実体験ではそう感じた。

1) ムダに仕組みを複雑にして、ワケのわからんクラスが増えてしまう
2) デザパタだのなんだの言うけど、こんなの前から似たようなのやってる。
 Cでも出来る(とか言ったり)、テンプレートでもできる(とか言ったり)、
 OOPLじゃなくてもできる(とても気軽に言う)、
 これって○○パターンの派生(気軽に定義をぼやかす)と言えるんじゃね(と言ったり)。

そう思うんなら、せめて無理矢理使うのだけはやめてほすぃ(´;ω;`)

690:デフォルトの名無しさん
09/03/01 14:50:45
>>689
そりゃそうだろう。
極論すれば、よく見かけるのに名前を付けただけ。

691:デフォルトの名無しさん
09/03/01 15:01:11
デザパタってクラス図とかも状況に応じて変化するんでしょ?
あんまり意識しすぎても意味ない気がするんだけど…



692:デフォルトの名無しさん
09/03/01 16:37:27
それがどうした

693:デフォルトの名無しさん
09/03/03 10:06:50
ぼく

694:デフォルトの名無しさん
09/03/03 10:28:19
> デザパタだのなんだの言うけど、こんなの前から似たようなのやってる。

デザパタの本を渡した新人が9割9分返してくる言葉www

695:デフォルトの名無しさん
09/03/03 10:49:24
結局のところ、デザパタは難しいんよ。
だから、知ったか大発生になるんよ。

デザパタの価値を知るのは、
「設計の困難>デザパタ学習の困難」
な場合だけだよ。

デザパタ適応で何が柔軟になるのか、
パターンをカタログ化して嬉しいのか、
そこがピンと来ないんよ。
設計で苦しんでないと、ピンと来ないんよ。

696:デフォルトの名無しさん
09/03/03 11:42:11
デザパタ覚えたての新人が増えたようだな
悪い方に育ってないが、デザパタはそんな仰々しいもんじゃねーよw

697:デフォルトの名無しさん
09/03/04 04:08:05
デザインとかいってるけどその名にふさわしいのって一部だけだろ
シングルトンなんてただのコーディングテクニックっていうレベルのものじゃん

698:デフォルトの名無しさん
09/03/04 05:24:29
ところで、SINGLETONは旨いのかな?
スコッチの話なんだが...

699:デフォルトの名無しさん
09/03/05 02:04:50
そのネタ定期的にみるな。

700:デフォルトの名無しさん
09/03/05 09:49:09
>>697
>>690
> 極論すれば、よく見かけるのに名前を付けただけ。

701:デフォルトの名無しさん
09/03/05 14:02:47
多分だが、>>697 は「デザイン」の意味をよく解ってない。

702:デフォルトの名無しさん
09/03/06 03:22:16
どうでもいいわ

703:デフォルトの名無しさん
09/03/13 03:37:19
Visitorはダブルディスパッチの模写だ、とかっていうんだけど、
ダブルディスパッチって要は2つのクラス階層で処理を分岐させることではないの?
Bridgeもそうだと思って検索してみたんだけど、なんかそうでもなさげ
なんか勘違いしてる?

704:デフォルトの名無しさん
09/03/13 16:11:54
ダブルディスパッチはvisitされるオブジェクトがVisitorを兼ねる場合のパターンと
見なすこともできる。
どちらの方が都合が良いかは場合によるので一方が他方の模倣というわけではないな。

705:デフォルトの名無しさん
09/03/13 23:44:51
憧れのアーキテクトに会いに行こうぜ
待ってる。
URLリンク(www.microsoft.com)


706:デフォルトの名無しさん
09/03/14 04:16:54
ダブルディスパッチってのは、
例えばクラスAとBにそれぞれ3つの派生クラスa0,a1,a2,b0,b1,b2があったとして、
組み合わせによって動作が異なる場合の解決策。
これをA→Bの順で2回ディスパッチすると、最大9パターンの動作が存在しうる。

Bridgeの場合、
例えばクラスAの委譲先はa0,a1,a2,...、クラスBの委譲先はb0,b1,b2,...というように、一方向の関係になっている。
a?がBの委譲先になったり、b?がAの委譲先になったりはしない。
AもしくはBから1回ディスパッチすればいいので、最大6パターンの動作が存在しうる。

…あんま自信ないけど、こんなかんじで合ってる?

707:デフォルトの名無しさん
09/03/14 17:11:13
>705
MSはなぜ顔写真を載せようと思ったのか

708:デフォルトの名無しさん
09/03/14 17:51:35
BridgeはむしろStrategyのContextクラスがインタフェース階層化された場合と
見ることが出来る。これはモジュールを疎結合にするための構造化の手法だが、
マルチプルディスパッチやVisitorは単純に複数の引数型を動的に解決する方法であり、
つまり条件分岐の上等なやつでしかない。

709:デフォルトの名無しさん
09/03/14 17:56:16
Bridgeパターンよくわからんね。

710:デフォルトの名無しさん
09/03/14 19:12:22
>>706
パターンの目的が知りたいのか構造が知りたいのか分からないからレスもしにくいんだが、

Visitorパターンの目的はダブルディスパッチで、ダブルディスパッチは関数のオーバーロードを実行時の型によって行う動作のこと
ポリモーフィズムを使ってどうやって実現するかを考えればだいたいの人はGoFの構造を考え付くと思う

Bridgeパターンの目的はクラスのある部分を分離してしまうこと
分離元クラスと分離されたクラスがそれぞれ1つずつならpimplみたいな形になるけど、それぞれがクラスツリーを形成する場合を考えればだいたいの人は(ry

711:デフォルトの名無しさん
09/03/14 19:22:22
名前をつけることでイメージを固定化するというか共有するというか
大抵のパターンは解かってる人なら大抵思いつくことなんだと思う

解からん人や入門者にもイメージを伝えやすいし

712:あぼーん
あぼーん
あぼーん

713:デフォルトの名無しさん
09/04/29 20:48:01
スレリンク(mitemite板:530-534番)

714:デフォルトの名無しさん
09/05/12 12:59:13
>3.1) Stateパターン
> これを知ったとき、「ああ、これがOOPか…」と感動した覚えが。
私は逆に、オブジェクトの振る舞いの実装がオブジェクトではなく
状態にあるってのが違和感あってだめだった
同じ「腹痛」状態でも、胃薬飲む人、我慢する人、病院行く人と
色々あるからオブジェクトそのものも状態の一つじゃないかと

715:デフォルトの名無しさん
09/05/12 13:00:29
ああアンカー忘れ
>>686

716:デフォルトの名無しさん
09/05/12 13:38:14
いや多分stateパターンの実装方法が「OOPっぽい」って思ったんじゃなかろうか

717:デフォルトの名無しさん
09/05/12 15:50:39
BridgeってCで言うところの関数ポインタ渡しだよね?


718:デフォルトの名無しさん
09/05/12 18:47:25
Stateで状態が組み合わせだった場合どうなるんだろ

719:デフォルトの名無しさん
09/05/12 19:21:13
設計ミス

720:デフォルトの名無しさん
09/05/16 16:10:06
>>717
関数ポインタ渡しはStrategyだろ

>>718
Boost.Statechart

>>710
何度見てもVisitorはキモいと思う
関数型言語のパターンマッチとかC++のtraitとかで何とかならんのか

721:デフォルトの名無しさん
09/05/16 16:19:23
>Statechart
NFA->DFAの変換をしろということか

722:デフォルトの名無しさん
09/05/22 13:47:08
C++のtraitsの方が何やってるのかさっぱり解らない
どうもテンプレートは苦手だ

723:デフォルトの名無しさん
09/05/22 17:25:35
>>722
traitsはtemplate引数の型をコンパイラに自動判別させるための仕組み
イテレータは知っての通り5つの種類がある

これをいちいち型指定しなくてもコンパイラが判別してくれるようにする


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch