Open Phanty133 opened 4 years ago
Add tests
Man būtu tikai viens komentārs, un tas ir filozofiskas dabas - tiklīdz serializācija ietver papildus "gudrību", tādu kā īpašo replacer funkciju (un deserializācijas gadījumā īpašo reviver funkciju), tad atstāt to izsaukšanu "lietotāja rīcībā" ir apgrūtinoši. Tā kā serializācija/deserializācija ir darbības ar objektu "no ārpuses" (nevis objekta stāvokļa maiņa), tad tādas lietas var salikt klases statiskajās metodēs: CukasGame.toJSON(cukasGame) metode, kas atgriež pareizo JSON, un CukasGame.fromJSON(), kas atgriež dzīvu CukasGame objektu. Abas metodes izmantotu īpašās replacer un reviver metodes, un lietotājam nav tas jāzina, kuras un kāpēc lietot. Savukārt pašas replacer/reviver metodes tādā scenārijā nav nepieciešams atstāt globālai piekļuvei, tās var ienest minēto statisko funkciju scope.
Deserializētā objekta iedarbināšana lietotāja interfeisā jau ir pavisam cita opera, kontrolierim piesaistītā modeļa uzjaunošana un modeļa inicializēšana ir neapejams ļaunums, jo tos ir jāizsauc tam, kurš uzrauga MVC darbību.
Implementēju serialization CukasGame un CukasPlayer klasēm (Cards un CardSet uzliku temporary toJSON() metodi, lai debuggotu).
Save/Load example: