これがシナリオです。
public interface Processor{
public void create();
public void setDocuments();
public abstract void prepareDocuments();
}
public class ProcessorImpl implements Processor{
public void create(){
// Do something
}
public void setDocuments(){
// Do something
}
}
public class ProcessorA implements ProcessorImpl{
// this class will implement only once abstract
// method which is prepareDocuments()
public void prepareDocuments(){
// prepare documents..and also
// set the Documents list which will be checked by create()
// method and then index will be created.
}
}
public class IndexGenerator{
public static void main( String[] args){
ProcessorA a = new ProcessorAImpl();
a.create();
}
}
簡単な背景....インデックスの作成、インデックスからのドキュメントの削除、インデックスへの更新と追加を含むすべての Lucene インデックス関連のアクティビティを処理するための汎用フレームワークを開発しています。ドキュメントの作成を除いて、インデックスを処理するすべてのロジックは同じままです。各インデックスには異なるタイプのドキュメントがあるため、prepareDocuments() メソッドを抽象化し、インデックス タイプごとに実装しました。
ここで、すべてのインデックス ジェネレーター クラスで、ProcessorA のような特定のインデックス プロセッサのインスタンスを作成し、create() メソッドを呼び出すだけにしたいと考えています。しかし、問題は、prepareDocuments が setDocuments() メソッドを呼び出してドキュメントを設定しているにもかかわらず、create() メソッドが常にドキュメント リストの空/null を検出することです。オブジェクト指向の専門家から助けを求める必要がある設計上の欠陥があることはわかっています。
ありがとう