多くの場合、MVCを使用してプログラムを設計すると、コントローラーが半分の時間無駄になります。
つまり、ビューで何かが発生します(ボタンのクリックなど)。次に、ビューはコントローラーに通知します。次に、コントローラーはモデルに直接委任し、何もする必要がないため、他に何もしません。
例えば:
ユーザーはボタン「カラーブルー」を押します>ビューはコントローラーに通知しますcontroller.colorBlue()
>コントローラーはモデルに通知しますmodel.colorBlue()
>モデルの色が何か青いです。
この例では、コントローラーは役に立たないようです。それは何も追加しません。ビューはモデルに直接話しかけたかもしれません。
ただし、残りの半分の時間は、コントローラーがビューとモデルの間で何らかのメディエーションを行います。
私の質問はこれです:これはMVC構造でどのくらい一般的ですか?コントローラの半分の時間が不要であるように見えるのは理にかなっていますか?それともこれは問題ですか?これは一般的ですか?私はこれにどのように取り組むべきですか?
私の質問が十分に明確でない場合は、そのように言ってください。
controller.colorBlue()
に、実際にを呼び出した方がよい場合がありますmodel.setColor(0, 0, 255);
。モデルとビューを分離する1つの理由は、モデルの単一の状態を表すために複数のUI要素を使用していることが多いためです(たとえば、アイテムがメニューでチェックされ、ツールバーが押され、ポインターが塗りつぶしに変わります)アイコンはすべてモデルで現在選択されているツールフィールドに対応します)。MVC分離により、モデルはさまざまなUI要素の同期について心配する必要がありません。