1

現在受けているトレーニング スキームの一環として、単純なコマンド ライン ベースのヘルプデスク アプリケーションの開発を任されています。このプロジェクトのポイントは、デザイン パターン、SOLID 原則、MVC アーキテクチャなどを使用する能力を開発することです。

MVC 構造を柔軟に保つ方法を理解するのに問題があります。これが私のコードの一部のサンプルです...

public class RegisterController 
{   
    View view;
    RegisterModel registerModel;

    public RegisterController()
    {
        registerModel = new RegisterModel();
    }

    public void processRegistration(String username, String password, Role role)
    {
        if(registerModel.isRegisterable(username, password))
        {
            User newUser = new User(username, password, role);
            registerModel.registerUser(newUser);
            view = new LoginView(new LoginController());
        }
        else
        {
            System.out.println("ERROR during registration.");
            view = new MainView(new MainController());
        }

        view.startView();
    }
}

理想的には、モデルやコントローラーを変更せずに、後日アクセスして、Web ページなどの別のユーザー インターフェイス (ビュー クラス) に置き換えることができるようにしたいと考えています。ただし、現時点では、コマンド ラインの「MainView」および「LoginView」クラスの具体的な実装をコーディングしていることがわかります。

このコントローラー コードをより柔軟にし、最小限のコード変更で別のユーザー インターフェイスに置き換えるにはどうすればよいでしょうか? 別の UI に変更しても、コントローラーのコードが同じままであると期待するのは非現実的ですか?

4

1 に答える 1

1

MVC/MVP デザイン パターンの主な利点の 1 つは、ビューとモデルをモックしながらプレゼンターを単体テストできることです。

その結果、コンストラクターに引数として渡されるビューとモデルを使用して、コントローラー/プレゼンターを構築することを常にお勧めします。ビューとモデルがインターフェイス タイプとして渡される場合、それらはテスト シナリオでモック オブジェクトに置き換えることができます。現在の設計では、具体的な実装がコントローラー内で選択されているため、このパラダイムが破られています。

私は通常、コントローラーとビューを 1 つの中央の場所にリンクします。ただし、これは、コントローラーが構築時に高価な計算アクションをすぐに起動しないことを前提としています。これに対する完璧な答えがあるかどうかはわかりませんが、テストできるように現在の設計を調整する必要があると確信しています。

于 2012-09-02T12:22:55.467 に答える