Qual è una soluzione generale per consentire al client di scegliere l'istanza concreta di un output del metodo?

1

Quali sono le soluzioni generali per consentire al client di scegliere l'istanza concreta di un output del metodo?

Ad esempio, nella API di Lucene il search riceve e modifica il parametro di input del collector, ma questo è generalmente considerato una cattiva pratica:

IndexReader reader = DirectoryReader.open(index);
IndexSearcher searcher = new IndexSearcher(reader);
TopScoreDocCollector collector = TopScoreDocCollector.create(10, true);
searcher.search(q, collector);
ScoreDoc[] hits = collector.topDocs().scoreDocs;

Un'alternativa sarebbe quella di fornire un Factory come input e fare in modo che il metodo di ricerca restituisca l'istanza creata.

Che altro?

    
posta Filipe Miguel Fonseca 26.02.2013 - 15:50
fonte

1 risposta

5

Generici - abbastanza ovviamente? In C # potrebbe sembrare:

public class Searcher
{
    public IEnumerable<T> GetResults<T>()
    {
        return new[] { default(T) };
    }
}

E poi:

var searcher = new Searcher();
IEnumerable<string> results = searcher.GetResults<string>();
    
risposta data 26.02.2013 - 16:20
fonte

Leggi altre domande sui tag