ここにシナリオがあります。OO設計の支援が必要
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インデックスに関連する活動を処理するための汎用的なフレームワークを開発しています。索引を処理するためのすべてのロジックは、文書の作成以外は同じです。各インデックスは異なるタイプのDocumentを持っていますので、prepareDocuments()メソッドを抽象的に保ち、各インデックスタイプに対して実装しています。
ここで、すべてのインデックスジェネレータクラスを、ProcessorAのような特定のインデックスプロセッサのインスタンスを作成してcreate()メソッドを呼び出すようにしたいとします。しかし、問題は、createDocumentsはsetDocuments()メソッドを呼び出すことによってドキュメントを設定していますが、create()メソッドは常にドキュメントリストが空/ nullであると判断することです。私は実際にOOの指導者の助けを求める必要があるいくつかの設計上の欠陥があることを知っています。
おかげ ゼラス