2011-12-21 22 views
1

私はプログラムを学び始めています。単純なBlackJackコンソールゲームを作成しました。今、私はswing/JFrameを使ってGUIを作成しようとしており、同時にMVCの基礎を学び、学ぶことに決めました。私はこれを見つけたjava/gwt UI coding - clean code約MVC基本的なMVC - 簡単なJavaプログラム

私の質問は、どのくらい正確に彼らがヒットヒットした後にプレーヤーの手に変更が通知される必要がありますか?ビューは、プレイヤーの手をモデルが変更された、より基本的にはどのように見るには、例えば、モデルクラスにデータを表示する必要があります知っている必要がありますどのように

ユーザーがヒットしたい場合は、hitBtn(in VIEW) -> actionListener()(in CONTROLLER) -> hit()(in MODEL)

- hit() would than modify the nessessary model classes 
    (i.e. DealtCards, Deck, Cards objects) 

?。モデルクラスでゲッターメソッドを使用するか、モデルからコントローラをビューに渡す? (私はビューには、モデルへの参照を持つべきではない印象の下に)

ありがとう!モデルの変更に関するビューを通知するため

答えて

1



2.コントローラは、ビューおよび変更を伝播モデルとの間のブリッジとして機能することができます。
ビューからモデルを参照しないことは、常に受け入れられないとは思いません。モデルタイプに明確なインターフェースがあり、実際の実装が隠されている場合、ビューはそれを参照することがあります。
data bindingも参照してください。これはSWTですが、方法は実装に依存しません。

0

コントローラへの参照や、参照するコントローラへの参照を持つビューに問題はありません。それは、そのことが働くための方法でなければなりません。重要なのは、それぞれが疎結合するために参照を渡す方法です。私は通常、バインディングを実行するためにインターフェイスとコンストラクタまたはセッタ注入に関する参照を使用します。このリンクでの制御の反転についての詳細:MVCのための
http://martinfowler.com/articles/injection.html

基本的な考え方は次のとおりです。モデル、ビューおよびコントローラの

  • コードインタフェース。
  • モデル、ビュー、およびコントローラのコード実装。
  • できるだけデカップリングしてください。

コントローラに関するヒント:私は通常、ActionListenersやその他の特定のGUIクラスをビューの実装に配置し、そこから自分のイベントをコントローラにディスパッチします。このようにして、別のGUIを持つ別のプラットフォームにアプリケーションを移植したい場合は、ビューインタフェース、コントローラインタフェース、おそらくコントローラ実装を再利用できます。再利用できないものは、ビューの実装とモデルの実装だけです。

関連する問題