2016-06-22 9 views
0

モデルビューコントローラについて質問があります。ビューとコントローラはMVCでどのように通信しますか?

Viewとコントローラが互いにどのように通信できるか混乱します。

私はモデルインスタンスを取り込んでビュークラスを持っている:

View v = new View(model); 

私もViewクラスに、ActionListenerフィールドを持っているし、そのコンストラクタで、私がモデルと現行のインスタンスに渡していますクラス(ビュー):今すぐ

private ActionListener listener; 
. 
. 
. 
listener = new Controller(model,this); 

私のコントローラクラスで、私はActionListenerを拡張してきたし、モデルとビュークラスに渡し:

public class Controller implements ActionListener{ 
    public Controller(model m, View v){ 
. 
. 
. 

今、私の質問は、モデルビューコントローラのコントローラクラスのコンストラクタでビュークラスを渡すことができますか?なぜ私がビューを渡すのかという理由は、ビューウィンドウを閉じたり、テキストフィールドから値を渡したいことがあります。また、時々私はビュークラスからメソッドを呼び出すしたい。これはMVCを行う正しい方法ですか?

おかげ

答えて

0

あなたはどのようにMVCを実装する5種類の人に尋ねることができますし、5種類の答えを得るでしょう。それを行う方法は非常に多くあります。私は、MVCやMVPなどの他のデザインパターンについて詳しく説明します。 Martin FowlerにはGUI patternsに関するすばらしい記事があります。素晴らしい情報を持っているthis articleもあります。

質問にお答えします。ビューを知っているコントローラに間違いはありません。コントローラーは、ユーザー入力を処理する必要があるコントローラーです(MVPと考えると賢明です)。私はインターフェイスを作成し、コントローラにはビュー用のインターフェイスしか知らせません。だから、IViewのようなものを作り、あなたの視点がそのインターフェースを実現するようにしてください。そうすれば、密接に結合されたビューとコントローラがなくなり、テスト用のモックビューを作成することができます。

関連する問題