0

書籍では、iOS でのゲームの設計は MVC パターンを使用して行われていると少し混乱しています。だから私たちは持っています

  1. Interface Builder によって行われる表示、およびコントロールのプロパティ/値 (アウトレットとして) とイベント ハンドラー (アクションとして) の接続の描画

  2. 残り時間や現在のプレイヤー (人間のプレイヤー) のスコアなど、ゲームの状態を格納するモデル

  3. ビューがロードされた後に実行されるコントローラーは、モデルのデータをビューに入力し、ゲームのタイマーを設定し、ユーザーによる画面のタップなどを処理し (イベント ハンドラー)、タイマー イベントのイベント ハンドラーを実装します。 .

これは理にかなっていますが、 と呼ばれる 4 番目のクラスもありますComputerPlayer。これは、人間のプレイヤーが推測する単語を作成し、人間のプレイヤーが推測する残りの単語数を伝えるなど、ゲームのルールとメカニズムを処理するクラスです。人間のプレイヤーが推測する次の単語を提供します。 (更新: この ComputerPlayer は Model クラスによって 100% 使用されます... Model コードは ComputerPlayer オブジェクトをインスタンス化し、それを呼び出します)。

この MVC モデルに余分なクラスがある理由がよくわかりませんComputerPlayerModelこれをクラスの一部、またはクラスの一部にしないのはなぜControllerですか?

(Ruby on Rails の MVC パターンと比較すると、ヘルパーのように見えます。しかし、ヘルパーは主に View コードによって呼び出されます。)

4

3 に答える 3

1

Fuhrmanatorが言ったように、ComputerPlayerはモデルレイヤーの一部と見なされているようです。ただし、Utilityクラスとして表示することもできます。

MVCでは、ユーティリティクラスはどのレイヤーにも含まれず、どのレイヤーからでもアクセスできます。

于 2012-04-18T05:49:46.150 に答える
1

MV* C * パターンのCは、多くの場合、異なるコントローラーと対話します。したがって、1対1の関係ではありません。ComputerPlayerController を追加することは、MVC パターンで完全に有効であり、推奨されます。

于 2012-04-16T09:23:58.063 に答える
1

MVCはより構造的な組織であるため、各要素 (M、V、C) は通常、クラスのグループ (またはレイヤー) です。

おそらくあなたの本は、それぞれのクラスを 1 つしか説明していないため、物事を単純化しすぎているのでしょう。ComputerPlayerモデルレイヤーの要素として表示されます。ウィキペディアのページからわかるように、MVC には多くの解釈/実装があります。

于 2012-04-17T15:50:44.540 に答える