Titolo terribile, ma questa è la situazione in cui mi trovo spesso e non ho trovato un buon design per renderlo bello. Diciamo che sto lavorando con Javascript e ho un oggetto su cui sto lavorando che deve persistere in un DB quando vengono apportate modifiche.
obj = {
users : [
{425: {name:'test'}},
{427: {name:'test1'}},
{450: {name:'test2'}},
],
deleteUser : function(id){
delete this.users[id];
//maybe some other code (ui manipulation)
this.persist();
},
deleteAllUsers : function(){
var me = this;
var uids = Object.keys(this.users);
uids.forEach(function(u, i){
me.deleteUser(i);
});
this.persist();
},
persist: function(){
//some ajax call that persists the users array
console.log('persist');
return;
},
};
obj.deleteAllUsers();
Quindi, al momento, quando chiami deleteAllUsers
, verrà mantenuto su ogni chiamata a deleteUser
. Voglio deleteUser
per saltare il passaggio persistente poiché verrà chiamato più tardi nella funzione di chiamata.
Le due soluzioni che ho pensato:
-
Duplica il codice da
deleteUser
adeleteAllUsers
e solo alla fine persi. (No, è terribile). -
Definisci
deleteUser
comedeleteUser(id, persist)
, quindi possiamo specificare nell'argomento persistente se dovremmo chiamare persist oppure no. Questa è una soluzione ok, ma ritengo che non sia l'ideale.
C'è qualche schema di progettazione che si occupa di questo? O qualcuno ha trovato un modo molto pulito per affrontare questa situazione?