2

インポーターをいくつか書く必要があります。それらはすべて同じ初期化が必要です。そこで、すべての初期化を行い、main メソッドも持つ抽象クラスを作成して、すべてのサブクラスrun()が特定のインポート作業を行うために実装するだけで済むようにします。

public abstract class AbstractImporter {

    public AbstractImporter() {
        // Initialization
    }

    public abstract void run();

    public static void main(String[] args) {
        AbstractImporter importer = new AbstractImporter();
        importer.run();
    }

}

public class ConcreteClass() {

  public void run() {
    // Do some importing  
  } 

}

もちろん、この抽象クラス ( new AbstractImporter()) のインスタンスを作成することはできません。

誰かがそれを解決する方法を知っていますか? ティア!

4

4 に答える 4

4

明らかに、匿名またはその他の具体的なクラスが必要です。

メイン メソッドを別のクラスに移動し、データ (ドメイン固有または定数) に基づいて適切な具象クラスをインスタンス化してから実行することをお勧めします。このようにして、各実装を他の実装から独立させることができます。

public abstract class AbstractImporter {

    public AbstractImporter() {
        // Initialization
    }

    public abstract void run();
}

public class ConcreteImporter1 extends AbstractImporter {
    public void run() {
        //do something
    }
}


public class ImporterMain() {

    public static void main(String[] args) {
        AbstractImporter importer = createImporter(args[1]);
        importer.run();
    }

    private static AbstractImporter createImporter(String type) {
        if (type.equals("1")) {
            return new ConcreteImporter1();
        }
        ....
    }
}
于 2013-08-16T22:12:23.683 に答える
1
new AbstracterImporter() { 
  public void run() { 
    // ... 
  } 
};

現在、モバイル デバイス上でフォーマットが不足していることをお詫び申し上げます。

于 2013-08-16T21:52:35.700 に答える