回答編集履歴

1

回答追記

2015/10/08 23:46

投稿

TakeOne
TakeOne

スコア6299

test CHANGED
@@ -7,3 +7,19 @@
7
7
 
8
8
 
9
9
  ビュー毎にモデルを作ると、今回の質問のように本来1つのデータなのに別々のモデルに同じデータが存在してしまい、その整合性を気にしないといけなくなり、処理が複雑になります。それはMVCモデルではありません。そういう事態にならないようにするために本来1つのデータは1つのモデルで管理するのがMVCモデルです。
10
+
11
+
12
+
13
+ (10/9 8:43追記)
14
+
15
+ 勘違いされるといけないので、少し補足します。
16
+
17
+ 質問のコードのようにCommentクラスとCommentListクラスの2つを作ること自体は間違いではありません。その2つが別々に存在する別々のモデルであると考えることが誤っています。1つのモデルの中のデータ構造として、Commentクラスインスタンスの集合を持つCommentListクラスインスタンスが1つあると考えるのは正しいです。
18
+
19
+ 例えば、詳細画面を表示するなら、
20
+
21
+ CommentListクラスに指定ユーザ名を持つCommentクラスインスタンス(CommentListクラス内で保持しているインスタンス)を返却するメソッドを作り、詳細画面のビューからそのメソッドを呼び出しCommentクラスを取得します。そしてCommentクラス内の各プロパティを参照して詳細画面を作ります。そして、いいねボタンが押されたら、Commentクラスのlikeメソッドを呼び出していいね数をカウントアップしてもらえばよいです。その場合カウントアップを依頼したCommentクラスは、CommentListクラス内で管理されているインスタンスですから、CommentListの方にも何か依頼する必要はないかと考える必要はありません。
22
+
23
+
24
+
25
+