Costruttore punto di ingresso vs init (), run () ecc

2

Supponiamo di avere un widget Js, che include tre oggetti vista, controller, modello.

var MyWidget=function(){
 this.setModel(new Model());
 this.setView(new View());
 this.setController(new Controller());
 ...
}

E creo questo widget in questo modo widget=new MyWidget();

Ci deve essere qualche punto di partenza per avviare questo widget. La mia domanda è - qual è la migliore pratica (e perché) per definire il punto di ingresso: in costruttore o in qualche metodo (esecuzione, init, ecc.). Voglio dire:

widget=new MyWidget(); //to create AND start widget

vs

widget=new MyWidget() //to create
widget.run();  //to start
    
posta iJava 11.01.2015 - 20:22
fonte

2 risposte

1

Ci sarebbe mai uno scopo per creare il tuo widget senza "avviarlo"? Altrimenti, basta fare tutto nel costruttore. Se esiste uno scopo, ma non è comune, prendere in considerazione alcune alternative come l'utilizzo di una classe separata con una funzione init / run in modo che il caso d'uso predefinito rimanga il più semplice possibile. Se lo scopo è comune, avere una funzione init / run va bene.

Quando si tratta di API, cerca sempre di rendere i casi d'uso più comuni i più facili da ottenere.

    
risposta data 11.01.2015 - 20:30
fonte
1

Questo dipende dalla complessità del widget. È possibile creare e avviare un widget finché si passa a tutte le informazioni e le dipendenze per renderlo operativo. Se si dispone di una classe complessa che si basa su molte altre classi per eseguire lavori specializzati, è necessario creare un'istanza di tutti quegli oggetti helper nella funzione di costruzione o passarli come argomenti. Ciò può diventare ingombrante poiché le dipendenze esterne per una classe iniziano ad aumentare. Ad un certo punto un "widget" finisce con questo ciclo di vita di base:

  1. Istanziazione: porta in vita l'oggetto, ad es. chiama la sua funzione di costruzione
  2. Configurazione: assegna le dipendenze e assegna all'oggetto tutte le informazioni necessarie per operare
  3. Inizializzazione - Il sollevamento pesi iniziale per iniziare a rispondere all'utente. Cose come i gestori di eventi sono impostate in questa fase
  4. Uso: l'oggetto è disponibile per interagire con l'utente
  5. Distruzione - Il widget non è più necessario e deve essere preparato per la garbage collection. In JavaScript, questo è un processo manuale

Se il tuo widget non ha bisogno di molto dal mondo esterno, un metodo "init" o "run" è solo una digitazione extra.

Se si desidera sfruttare l'iniezione di dipendenza e l'inversione del controllo, l'iniezione del costruttore diventa difficile da mantenere, quindi potrebbe essere necessario il ciclo di vita in più fasi descritto sopra.

    
risposta data 12.01.2015 - 22:54
fonte

Leggi altre domande sui tag