Webで多くの論文や情報を読んだことがありますが、MVCは初めてです。私はそれがやや曖昧であり、MVCパターンの多くの異なる解釈があることを知っています..しかし、違いはやや最小限に見えます
私の主な質問は、M、V、およびCは、これを正しく行うために常に必要になるのでしょうか。私が読んだことの中で、誰もこれに取り組んでいるのを見たことがありません。例(私はCocoa / Obj-cで作業していますが、それほど重要ではありません)。
1)GUIに単純な画像がある場合、またはユーザーの便宜のためだけに保存または変更されていないテキスト入力フィールドがある場合、これらは両方ともV(ビュー)になりますが、M(データもドメインもありません)はありません処理が進行中です)、それらをブリッジするCはありません。だから私は「V」であるいくつかの側面を持っています-問題ないようです
2)2つの異なる表示ウィンドウがあり、それぞれに「ACTIVATE FOO」というラベルの付いたボタンがあります。ユーザーがどちらかのボタンをクリックすると、両方のボタンが押されて「DEACTIVATE FOO」と表示され、3番目のウィンドウが表示されます。ラベル「FOO」。ボタンをもう一度クリックすると、両方のウィンドウのボタンが「ACTIVATE FOO」に変更され、3番目の「FOO」ウィンドウが削除されます。この場合、私のVは両方のウィンドウのボタンで構成されており、3番目のウィンドウ(おそらく3つのウィンドウすべて)も推測します。私は間違いなくCを持っています。私のコントローラーオブジェクトはこれらのボタンとウィンドウを認識し、クリックを取得してウィンドウとボタンに関する一般的な状態を保持します。ただし、ボタンが1つでも10つでも、ウィンドウの名前は「FOO」、ウィンドウの名前は「BAR」のどちらでも構いません。ここにはドメイン知識やデータはありません。ビューを制御するだけです。したがって、この例では、実際には「V」と「C」がありますが、「M」はありません。大丈夫ですか?
3)私が最も実行している最後の例。ビューとしてテキスト入力フィールドがあります。これにテキスト、たとえば重力を表す数値を入力すると、重力パラメータを考慮しながら、ボールの物理を計算するなどの処理を実行できるモデルに保持されます。ここにVとMがありますが、なぜCを追加する必要があるのかわかりません。コントローラーはビューからの信号を受け入れてモデルに渡すだけで、その逆も同様です。Cは単なるパススルーであるため、実際には「ジャンク」コードであり、私の意見ではこれ以上再利用可能にはなりません。ほとんどの場合、何かが変更されたときは、CとMの両方をほぼ同じ方法で変更する必要があります。ほとんどの状況でVとMのみが必要であると考えるのは、おそらくMVC初心者の間違いだと思います。次の主題に私を導きます。
4)Cocoa / Xcode / IBでは、コントローラーは常にIBでインスタンス化されたオブジェクトである必要があると思いますか?つまり、すべての「V」コンポーネントをIBに配置し、Viewオブジェクト(関連するもの)のコレクションごとに、インスタンス化されたコントローラーが必要ですか?そして、おそらく私のモデルはIBで見つけられるべきではなく、代わりにそこで見つけられたコントローラーコードと結びつくXcodeのクラスとしてのみ見つけられるべきです。これは正確ですか?これは、一貫性を維持しているため、実際には付加価値のないコントローラーを使用する理由を説明している可能性があります。
5)これらに名前を付けるのはどうですか?FOO / BARに関する上記の例では、FancyWindowOpeningControllerなどのようにControllerで終わるものがCになる可能性がありますか?モデルの場合-GravityBallPhysicsModelなどの接尾辞を付ける必要がありますか、それとも好きな名前を付けるだけですか?私は野生で何が起こっているのかを知るのに十分なコードを見ていません、そして私は早い段階で正しい軌道に乗りたいです
私をまっすぐにするか、私が正しい軌道に乗っていることを知らせてくれて、事前に感謝します。私はそれを理解し始めているように感じます、そして私がここで言うことのほとんどは理にかなっています、しかし私の推測の検証は私が自信を持って感じるのを助けるでしょう。