1

Swingを使用したアプリケーションとしてJavaでクライアントを実装しています。しかし今、私はそれからアプレットも構築したいと思います。両方を簡単に構築してドライに保つことができるようにするために、再設計/リファクタリングするための最良の方法は何ですか。

これは、次のようなコードの短い抽出です。main()

public class Client {
    public static final ScheduledExecutorService SERVICE;
    protected static String host;
    protected static int port;

    static {
         SERVICE = Executors.newSingleThreadScheduledExecutor();
         host =
         port = 
    }

    public static void main(String[] args) {
         //initalize netty

         //create user interface = JFrame in SwingUtilities.invokeLater

         connect();
    }

    public static void connect () {
         //connect using netty
    }

したがって、このファイルを別のファイルとしてコピーし、から拡張してJAppletに変更mainするとinit、実行できるようになりますが、コードの多くはコピーして貼り付けられるだけなので、もちろん見苦しいです。

それを再設計するための普遍的な解決策はありますか?

UPD:

public class Client {
    public static void main (String[] args) {
        App app = new App();
        app.connect();
    }
}

public class Applet extends JApplet {
    public void init () {
        App app = new App();
        app.connect();
    }
}

すべての初期化ロジックをに移動しますApp

4

1 に答える 1

3

最上位のコンテナーに依存しないクラスのグループにアプリケーションの大部分を削除します。

つまり、自分自身をトップレベルのコンテナにチェーンすることなく、必要に応じてアプリケーションを再利用/再デプロイできます。

次に、デスクトップエントリポイント用の「メイン」クラスと「アプレット」クラスが必要になります。これは、アプリケーションのメインインターフェイスを構築し、それを画面コンテナにアタッチするだけです。

これが、トップレベルのコンテナから直接オーバーライドするのではなく、アプリケーションロジック/UIを次のような単純なコンテナから拡張することをお勧めする理由の1つです。JPanel

于 2012-12-28T08:52:09.017 に答える