Come si chiama questa classe? È un modello?

0

Ho bisogno di creare una classe che abbia la seguente struttura:

public class MyClass {
    ArrayList<File> myList = new ArrayList<>();

    public void addFile(File f) {
        myList.add(f);
    }

    public void DoHeavyWork() {
       for (File f: myList) {
          /// ...
       }
    }
}

Stavo pensando a questo come a una facciata o forse a una specie di container. Sarebbe corretto?

    
posta user2018675 24.06.2016 - 20:17
fonte

1 risposta

3

Sembra un batcher . Quindi potresti chiamarlo così.

public class HeavyWorkBatch {
    ArrayList<File> myList = new ArrayList<>();

    public void AddToBatch(File f) {
        myList.add(f);
    }

    public void DoHeavyWork() {
        for (File f: myList) {
            /// ...
        }
    }
}
// Note there is a conspicuous lack of cleanup...
// What happens when AddToBatch is called again after DoHeavyWork?
// Is the class reusable so that DoHeavyWork should clear the ArrayList?

Tuttavia, la raccolta interna non è necessaria in base al campione fornito. E viste le domande che ho posto sopra, potresti semplificare proprio questo:

public static void DoHeavyWork(File f) {
    /// ...
}

E poi costruisci la lista separatamente, e itera separatamente dal fare il lavoro. In questo modo, l'operazione del file può essere ragionata e riutilizzata separatamente dalla raccolta. Perché la creazione di un batch è una preoccupazione separata dall'operare su un file.

myList.forEach((file) -> {
    HeavyWork.DoHeavyWork(file);
});

Se è necessario creare un batch da un elenco più grande, è possibile farlo in altri modi .

    
risposta data 24.06.2016 - 20:56
fonte

Leggi altre domande sui tag