2

PropertyChageSupportとを使用して、Swingを使用してJavaSEのMVCパターンを実装しましたPropertyChageListener。実装されたMVCの図は次のとおりです。

変更されたMVCパターン

の実装では、の助けを借りてViewプロパティの変更を行います。ModelController

View[OK]ボタンの次のようなコードが含まれています。

btnOk.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        modelController.setNumber(Integer.parseInt(numberField
            .getText()));
        modelController.setName(nameField.getText());
    }
});

完全なコードはSwingMVCにあります。

さて、私の質問は、上記のコードをbtnOkinViewに書き込むのか、それともinのメソッドに書き込む必要があるのか​​、ControllerView

btnOk.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        modelController.btnOkActionPerformed();
    }
});

上記の2つの実装のうち、MVCを実装するための好ましい方法はどれですか?

4

2 に答える 2

4

最初の注意点:私は専門家でも学生でもありませんが、最も趣味の良い人ですが、そうは言っても、私自身の好みはあなたの2番目の例です。

btnOk.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        modelController.btnOkActionPerformed();
    }
});

コントロールは、情報を抽出するためにビューのメソッドを呼び出す必要があり、呼び出すメソッドはすべて、ビューが実装するインターフェイスの一部になります。これでの私の目標は、ビューをできるだけダムに保ち、カップリングをできるだけ緩めるためにほとんど何でもすることです。

于 2013-03-03T01:20:31.057 に答える
4

あなたの図は、Swingアプリケーションの設計と互換性のあるモデル-ビュー-プレゼンター(MVP)パターンを示しています。このコンテキストでは、は、モデルからエクスポートするためのアプリケーション機能をカプセル化するための便利な方法です。具体的な例として:Action

  • DefaultEditorKitテキストコンポーネントに共通のモデルで動作する便利なタイプをエクスポートStyledEditorKitします。このに示すように、このようなアクションは、を更新します。これにより、対応するビューコンポーネントが間接的に更新されます。ActionDocumentDocument

  • ここControlPanelで引用した例ではActionの暗黙的なモデルを直接操作する多数のインスタンスを公開しています。List<Node>List<Edge>

于 2013-03-03T02:46:22.073 に答える