開始行: * キーワード [#i5588508] - 集約 - コレクション -- 配列 -- リスト * 何か [#ec18191a] 取り纏め役 配列やリストなど、コレクションによる集約を1級のクラスにし... たとえば伝票「Slip」と明細「Detail」があるとき、複数の「D... #ref(first-collection.png,center) * なぜか [#pf3aa25b] 配列やリストなどであるオブジェクトのコレクションをもつと... - 複雑 - 冗長 - 見通しが悪い コレクションに対する処理を集約する側に寄せると(上記の例... * どのように [#g9b6c9fb] 配列やリストなどのコレクション属性をひとつだけもつクラス... たとえば、次のように考えた伝票と明細の関係について。 Slip { List<Detail> details; // return sum of details sum() { sum = 0; for (detail: details) { sum += detail.amount; } return sum; } } Listとして集約しているDetailをDetailsとして独立させます。 Slip { Details details; // return sum of details sum() { return details.sum(); } } Details { List<Detail> collection; sum() { sum = 0; for (detail: details) { sum += detail.amount; } return sum; } } このときのDetailsはひとつのList<Detail>だけを属性にします。 //* 関連 //- //- * 参考 [#ped262e5] - [[実践的な設計って、なんだろう?(slideshare)>http://www... - [[いまさら聞けない「オブジェクト指向設計の3つのコツ」~... - [[ルール8:ファーストクラスコレクション - Strategic Cho... 終了行: * キーワード [#i5588508] - 集約 - コレクション -- 配列 -- リスト * 何か [#ec18191a] 取り纏め役 配列やリストなど、コレクションによる集約を1級のクラスにし... たとえば伝票「Slip」と明細「Detail」があるとき、複数の「D... #ref(first-collection.png,center) * なぜか [#pf3aa25b] 配列やリストなどであるオブジェクトのコレクションをもつと... - 複雑 - 冗長 - 見通しが悪い コレクションに対する処理を集約する側に寄せると(上記の例... * どのように [#g9b6c9fb] 配列やリストなどのコレクション属性をひとつだけもつクラス... たとえば、次のように考えた伝票と明細の関係について。 Slip { List<Detail> details; // return sum of details sum() { sum = 0; for (detail: details) { sum += detail.amount; } return sum; } } Listとして集約しているDetailをDetailsとして独立させます。 Slip { Details details; // return sum of details sum() { return details.sum(); } } Details { List<Detail> collection; sum() { sum = 0; for (detail: details) { sum += detail.amount; } return sum; } } このときのDetailsはひとつのList<Detail>だけを属性にします。 //* 関連 //- //- * 参考 [#ped262e5] - [[実践的な設計って、なんだろう?(slideshare)>http://www... - [[いまさら聞けない「オブジェクト指向設計の3つのコツ」~... - [[ルール8:ファーストクラスコレクション - Strategic Cho... ページ名: