ネイティヴアプリ開発でもjavascriptによるSPAアプリ開発でも同じかとはおもうのですが、MVCのモデルの設計が今ひとつわかりません。
入門書などで勉強中の私の解釈ですと、
・例えばサーバー側のAPIを叩いてデータを取得する際に、コントローラーやビューから直接叩くのではなくモデル経由でデータを取得する形にする。
・データの更新などがある場合も同様に、コントローラーからなどからはモデルを更新する。サーバーへの更新処理はモデルにまかせる。
で、疑問に思ったのが以下のような画面(twitterみたいなイメージ)があるとします
>一覧画面(ユーザーがコメントした一覧がみれる)
・ユーザー名
・コメント(簡易版)
・コメントにいいねされた数
>詳細画面(コメントの詳細がみれる)
・ユーザー名
・コメント(全内容)
・コメントがいいねされた数
・コメントへのいいねボタン
こんな画面があった場合にモデルの設計としては、以下のようなイメージになります。
コントローラ、ビューからは以下のような形になると思います。
・一覧画面はCommentListモデルからデータ取得
・詳細画面からはCommentモデルからデータ取得
で、詳細画面からいいねボタンを押した際の処理はどんな感じになるのでしょうか?
CommentモデルとCommentListモデルのlistの中身のlike_numを両方更新しないといけないと思うのですが、いまいちどんな実装になるのかが想像できません、、、、
`
class Comment
{
var user_name;
var comment;
var like_num;
func like() { // いいね押された時の処理 }
}
class CommentList
{
var list // Commentクラスのリストをもつ
// コンストラクタ function CommentList() { this.list = APIから取得してきたり }
}
`
すみません、上記のコードはプログラミング言語は適当でなんとなく伝わりそうな形で書きました
★追記の質問になります
Userの状態も追加された場合
たとえば、コメントしたユーザにたいしてフォローするなどのアクションを追加するとします。
その場合、フォローしているかどうかも管理しなくてはならなくなるので以下のようなイメージになりますでしょうか?
また、Userはidで一意になるものなので、同じidのUserクラスが作られることを考慮すると、UserManagerクラスみたいなものも作ったりするのでしょうか?
`
class User {
var id var name var is_follow
}
class Comment {
var id var comment var like_num var user // ★Userクラスの参照
}
`
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/10/09 03:41
2015/10/09 05:15 編集
2015/10/10 13:21