4

コントローラが(モデルにフィードするために)ユーザー入力をどこから取得するのか知りたいのですが。入力メディアはユーザーと強く関連しているため、ビューはユーザーのデータを取得する具体的な方法を認識してはいけませんか?しかし、どうすればコントローラーをビューから分離できますか?それらの目的が示唆するように、両方を互いに完全に独立させることは可能ですか?

例: ビューにcursesライブラリを使用するアプリケーションがある場合、それはターミナルからのみアクセスできることを意味します。cursesメソッドを使用してコントローラーのユーザーデータを読み取ると、カプセル化が解除されますが、ビューでメソッドを呼び出すことは、モデルの表示とは関係ありません。

4

5 に答える 5

3

MVCでは、コントローラーはビューからユーザー入力を取得します。

于 2009-07-29T14:36:38.373 に答える
1

ビューは実際にデータを入力することとはあまり関係がないと思います。ユーザーがコントローラーと直接通信していると見なすと、MVCの視覚化がはるかに簡単になります。コントローラはユーザーからデータを受信し、ビューを送り返します。多くのシステムでは、ビューエンジンはそれ自体を更新するいくつかの制限された方法を持っています(つまり、テキスト入力は、コントローラーに送信される前に入力されたものを表示します)。ただし、MVCタイプのアーキテクチャでは、両方が同じデータを処理できる場合は、任意のビューを他のビューに置き換えることができます。

例えば。ユーザー名の入力は、文字列の入力をサポートする任意のシステムで実行できます。コントローラは文字列を受け入れるため、Webアプリケーション、ターミナルアプリケーション、またはGUIアプリケーションで使用できます。

于 2009-07-29T14:46:59.590 に答える
1

ビューとコントローラーがオブザーバーパターンを介して通信することを検討してください。コントローラーは、ビューにオブザーバーとして自分自身を登録します。ユーザーがビューにデータを入力してEnterキーを押すと、ビューはデータを解釈し、使用可能なデータがあることをオブザーバーに通知します。その後、コントローラーはパブリックメソッドを介してビューからデータを取得できます。

于 2009-07-29T14:37:47.267 に答える
0

上手、

私はあなたのためにもっと具体的にしようとします。あなたが見ることができる、主題をマスターしない、助けにならない、pplに漠然とした/抽象的な答えを与えること。

MVC->モデルビューコントローラー

MVCの実装はたくさんありますが、あなたのケースはわかりませんが、1つあげます。

最も一般的なMVC実装は、このように機能します。

ビュー<->コントローラー<->モデル

Webシナリオでは。

ビューはHTMLページになり、データ入力はフォームで行われます。

<form action=/home/createuser method=post>
...code goes here...
</form>

Homeはコントローラー(homeという名前のクラス)であり、createuserはhomeのメソッドです。

public class Home extends Controller {

   public void createUser(Userform f){
      ...create user...
   }
}

このフォームは、データをパラメーターとしてメソッドに送信します。Createuserは、モデルと通信するために処理し、その場合は後でデータを永続化します。

于 2009-07-29T14:52:41.967 に答える
0

ビューには、ユーザー入力を送信するためにコントローラーにコールバックが必要だと思います。Webアーキテクチャでは、コールバックはhttpリクエストを介してユーザー入力をサーバーに送り返す機能を通じて提供されます。

あなたの場合、ncurseフロントには、ユーザー入力を送り返すためのコントローラーコンポーネントへの何らかのコールバックメソッドが必要です。

于 2009-07-29T14:38:52.770 に答える