質問編集履歴

2 プログラムコード

yoppy0066

yoppy0066 score 300

2015/10/09 12:43  投稿

クライアントアプリのモデルについて
ネイティヴアプリ開発でも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クラスの参照
}
}
`
  • Java

    24614 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • JavaScript

    37499 questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • Swift

    14459 questions

    Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

1 質問の追加

yoppy0066

yoppy0066 score 300

2015/10/09 12:42  投稿

クライアントアプリのモデルについて
ネイティヴアプリ開発でも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クラスの参照
}
  • Java

    24614 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • JavaScript

    37499 questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • Swift

    14459 questions

    Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る