Tak jako minimalne vime ze se muzeme bavit napriklad o klonovani - nicmene abych pravdu tak se ta debata vzdycky zvrhne v silenej proud domenek a nikam moc to nevede - navic si vsichni zacnou na 3ti strance nadavat; tak premyslim jak to udrzet v nejake kondici tu debatu :} tak rekneme ze klonovani: a zajimalo by me odkud teda se bere potreba vubec objekty klonovat? osobne to vidim jako naprosto posledni instanci jak bych resil vytvareni objektu - je to v js normalni a skutecne tak potrebne?
Hele, řeknu ti kde to používám já.
- Mějme systém A.
- V systému A jsou mimo jiné objekty B.
- Do systému A je možné registrovat hooky ( callbacky ).
- Systém A občas v návaznosti na vnitřní stav zavolá některý z callbacku s jedním z interních objektů B a očekává od callbacku odpověď v podobě objektu C.
- Nechci aby user systému A mohl z callbacku zasáhnout do vnitřního stavu A, takže předávaný objekt B naklonuju, a tím pádem si s ním pak už user může dělat co jen chce.
Jindy zase klonování využívám když chci oddělit jednotlivé transformační fáze objektu od sebe třeba proto že někde dál chci použít daný objekt v jednom z mezistavů.
Taky by šlo před-inicializovat objekt a místo tvorby nového objektu jen ten předinicializovaný naklonovat. (defakto factory pattern)
Dále v prototype based OOP se obvykle využívá klonování k tvorbě nových objektů. Respektive objekt získáme tak že naklonujeme prototyp. Dědění se pak dá udělat jako úprava klonu a vydání ho za další prototyp.
Tady se pouštím na tenký led, nejlíp znám JS a to má ten prototypový model maličkato pojatý jinak (o tom také svědčí ignorace klonování), takže tady by bylo fajn kdyby přišel na scénu nějaký guru prototypů.