回答編集履歴

2

追記

2017/12/18 02:29

投稿

iwamoto_takaaki
iwamoto_takaaki

スコア2883

test CHANGED
@@ -61,3 +61,21 @@
61
61
  カンマ区切りはモデルではなく表示部の問題なので呼び出し元の表示部のクラスか責務を受け取るべきです。
62
62
 
63
63
  (また、表示用のモデル毎に表示形式を保持させるのは個人的にはちょっとOOに偏り過ぎだと感じます。画面クラスがまとめて管理すべきだとかんがえます。)
64
+
65
+
66
+
67
+ ---
68
+
69
+
70
+
71
+ 追記ー
72
+
73
+ 質問者さんは退会されたようですが、「現場で役立つシステム設計の原則」を読んだので自分用のメモとしてその点を追記します。
74
+
75
+
76
+
77
+ 「3章 業務ロジックをわかりやすく整理する」で、三層+ドメインモデルについて書かれていますが、質問にある部分は三層の中のプレゼンテーション層の関心事です。明確には書いてないようですが、三層はそれぞれパッケージが別に分けるのが自然で、また、同一のドメインモデルを扱っても対象になるプレゼンテーションの対象が異なる(例えばWebUIとWebAPI)ならば、それぞれ別のプレゼンテーション用のクラスを定義します。
78
+
79
+
80
+
81
+ それに対して、実際の表示の部分は移譲を使うといいのではないでしょうか。といっても、金額の表示であれば金額用の表示をする(ヘルパー)オブジェクトに値を渡して、CSSのクラスなり編集結果なりを返すということになると思います。

1

追記

2017/12/18 02:29

投稿

iwamoto_takaaki
iwamoto_takaaki

スコア2883

test CHANGED
@@ -36,4 +36,28 @@
36
36
 
37
37
 
38
38
 
39
- もちろんaccyさんの例のようにNumberを拡張するのもありだとおもいます。しかしその場合も値を保持するオブジェクトの外で編集するため、AAAやBBBに編集された値を返すメソッドは作りません。
39
+ もちろんraccyさんの例のようにNumberを拡張するのもありだとおもいます。しかしその場合も値を保持するオブジェクトの外で編集するため、AAAやBBBに編集された値を返すメソッドは作りません。
40
+
41
+
42
+
43
+ ---
44
+
45
+
46
+
47
+ 追記ー
48
+
49
+ 共通部分を外部から呼び出すのが正しいという意味ではなく、場合によって選択すべきだというのが主張です。その点が分かりにくくなっていたので追記します。
50
+
51
+
52
+
53
+ 実際のところカンマ区切りというのは単なる一例でしょう。しかし、他の内容でも同様で責務として正しいのか検討すべきだと思います。
54
+
55
+
56
+
57
+ 手段としては、大きく分けて、継承(・ミックスイン)・移譲・呼び出し元の三種類(四種類)あると思います。後の方ほど疎結合になります。
58
+
59
+
60
+
61
+ カンマ区切りはモデルではなく表示部の問題なので呼び出し元の表示部のクラスか責務を受け取るべきです。
62
+
63
+ (また、表示用のモデル毎に表示形式を保持させるのは個人的にはちょっとOOに偏り過ぎだと感じます。画面クラスがまとめて管理すべきだとかんがえます。)