O copie completă a obiectului - preaplin stivă în limba rusă
Mai mult, proprietățile obiectului pot fi depozitate în locuri neașteptate. De exemplu, proprietățile atașate sunt stocate într-un loc nu este accesibilă de reflecție, având o copie a obiectului, și nu știe nimic mai mult.
Pentru că prin părinte / Copii element rădăcină accesibil, și apoi toate elementele, va trebui să clona întreaga fereastră. Deoarece DataContext este disponibil prin intermediul VM, apoi în același timp, trebuie să prohvatit și ea. Și pentru că există legături către modelul VM, vă astfel, va lua cu ei toate întreaga aplicație. Inclusiv, de altfel, câmpul care stochează istoricul modificărilor.
Apoi, există un set de obiecte care nu sunt în mod fundamental clonate. Deschideți fișierul? Socket? Zalochenny Monitor (blocare aka)? O excepție de aruncat? Orice Singleton din program? Tip. Delegați? au toate skloniruyutsya.
Ceea ce este cu adevărat necesar. Este necesar să se reprezinte starea programului sau părțile sale folosind VM- și obiecte model. Dacă doriți să le salvați, are sens pentru a face aceste obiecte immutabelnymi că nu au nici un risc ca starea lor se va schimba după ce ați salvat o copie. (Deal cu imuabile obiecte, acestea sunt ușor de a scrie, astfel încât atunci când schimbați piesele obiect sursa reutilizat. În cazul în care toate piesele imuabile, ele pot fi folosite oriunde, fără a fi nevoie de clonare în același mod.)
În continuare, datele afișate trebuie să respecte cu strictețe modelul MVVM, și a afișa starea VM, fără nici un anunț-libbing și instalați piese importante în codul din spatele. În același timp, starea View va fi determinată complet de starea VM, și, prin urmare, trebuie să vă amintiți View va dispărea.
În acest caz, singurele obiecte pe care trebuie să vă amintiți (nu clonat, și anume să-și amintească!) - starea curentă.