4

私はしばらくの間、データベース中心の Java Swing アプリケーションを作成してきました。

GUI と DAO コードは、次のような大きなツリーになります。

JFrame
  |
JTabbedPane
    |
   +--------------------+----------------------+-------------+
   |                    |                      |             |
JPanel1              JPanel2                JPanel3       JPanel4
   |                    |                      |             |
JButtons--JTable1   JTextFields--JButton     JTable2    JDialog--JTable3
             i!          i!                    i!                  i!
           Model1      Model2                Model3              Model4
             |            |                     |                   |
             +------------+-----------+---------+-------------------+
                                      |
                               DataAccessObject

アプリケーションにはいくつかのビューがあり、データを表示するための JTable を含むビューや、データを編集または追加するためのフォームを含むダイアログを含むビューがあります。

私はDataAccessObjectJDBC接続を持っています。AbstractTableModelビュー (フォームまたはテーブル) を DAO に接続するために、いくつかのモデル (extends ) を使用します。

私の最初のバージョンでは、DAO をシングルトンとして実装しましたが、これがアンチパターンであり、代わりに依存性注入を使用したことを知りました。そのため、基本的には最初に DAO を初期化してから、すべてのモデルのコンストラクターに注入します。次に、JFrame を初期化し、モデルへの参照をホール GUI ツリーのコンストラクターに挿入します。

穴の GUI ツリーを介してモデルへの参照を渡すのは非常にぎこちなく感じますが、依存関係を適切に制御できることはわかっています。しかし、データベースへの接続を備えたモデルを必要とするデータの多くのビューを持つデータベース中心の Java Swing アプリケーションに使用できる、より良い設計はありますか?

4

1 に答える 1

1

Shakedownのコメントも支持します。それはすべてレイヤーに関するものです。コードをレイヤー/ティアに分割します。

依存性注入について話していたので、Springリッチクライアントフレームワークを見て、Swingアプリケーションをどのように設計/開発できるかを理解することをお勧めします。

于 2010-09-09T12:54:29.810 に答える