Qual è un'implementazione migliore? Flex Programming con il framework del prezzemolo
-
29-10-2019 - |
Domanda
Sono abbastanza nuovo durante la programmazione guidata da eventi e uso MVC, quindi perdonami se questa domanda sembra una non domanda.
Sto cercando di assegnare valori alla mia classe modello singleton (client). Ho 2 opzioni:
Posso usare il costruttore della classe modello per assegnarsi a se stesso in questo modo:
Cliente di classe {
public var name; public var email; public function Client(arg_name, arg_email){ this.name = arg_name; this.email = arg_email; } }
Posso usare il controller per assegnare i miei valori per me così:
Class Controller{ public var client:Client = new Client(); public function assign(){ client.name = "booo"; client.email = "blaaah@email.com"; }
}
Quale di queste è una soluzione migliore? :) Il motivo per cui sono così confuso è perché ho visto esempi che passano solo valori alla classe modello e fanno #1 (e impostano nuove variabili come [var fullname = fname + lname], ma lo so per a Fatto che sia il compito del controller assegnare valori al modello.
Soluzione
Meglio è relativo.
Il secondo esempio è ciò che viene comunemente chiamato "iniezione di proprietà".
Fondamentalmente la prima opzione è più rapida, più piccola e molto meno.
La seconda opzione è più leggibile e flessibile.
Indipendentemente dal controller, l'iniezione ha il vantaggio che è possibile creare getter e setter per ciascuna proprietà.
Quindi in pratica puoi avere qualcosa che accada come inviare un evento ogni volta che modifichi il valore della proprietà "Nome".
Il codice sorgente Flex è pieno di questo concetto. Ad esempio ogni volta che si modifica la larghezza di un gruppo, non modifica solo il valore, esegue i controlli e quindi imposta il gruppo come sporco in modo che altre cose possano reagire ad esso.
Fondamentalmente rende semplice avere tutto ciò che fa le sue cose ed è più orientato agli oggetti.
Tutto ciò non significa che sia effettivamente meglio, ma ora è più comune scrivere il codice nello stile della seconda opzione.
Spero possa aiutare.