Bandiere con uso differito

1

Diciamo che ho un sistema. In questo sistema ho un numero di operazioni che posso fare, ma tutte queste operazioni devono accadere come un batch in un determinato momento, mentre le chiamate per attivare e disattivano queste operazioni possono entrare in qualsiasi momento . Indipendentemente dal numero di volte in cui il metodo / funzione doOperation1() viene chiamato, l'operazione viene eseguita una sola volta nel batch. Per implementarlo, potrei usare flag come doOperation1 e doOperation2 , ma sembra che sarebbe difficile da mantenere. C'è un modello di progettazione, o qualcosa di simile, che affronta questa situazione?

    
posta Trenton Maki 27.05.2014 - 20:43
fonte

2 risposte

2

Potresti voler esaminare Visitor Pattern . Ti permette di disaccoppiare le operazioni dagli oggetti su cui lavorano. Se si estende questo modello, per posizionare tali operazioni in una coda e quindi elaborare la coda come batch, questo potrebbe funzionare.

    
risposta data 27.05.2014 - 20:50
fonte
0
class A {
    void foo() { ... }
}

class DoFooOnce {
    bool activated = false;

    void activateFoo (A obj) {
        if (!activated) {
            activated = true;
            obj.foo();
        }
  }
}


main () {
    A obj1;
    B obj2;
    C obj3;

    DoFooOnce guard;

    guard.activateFoo(obj1);
    guard.activateFoo(obj2);
    guard.activateFoo(obj3);
}
    
risposta data 30.05.2014 - 03:11
fonte

Leggi altre domande sui tag