„Prototípus programtervezési minta” változatai közötti eltérés

[nem ellenőrzött változat][nem ellenőrzött változat]
Tartalom törölve Tartalom hozzáadva
Nagydivad (vitalap | szerkesztései)
Nincs szerkesztési összefoglaló
28. sor:
A sekély klónozást a C# nyelv a MemberwiseClone() metódussal segíti, ami az Object osztály része, így minden osztály örökli. Ezért tudtunk a sekély klónozásra két verziót adni a fenti példában.
[[Fájl:Prototype.PNG|bélyegkép|UML ábra]]
 
==Példa eset==
A prototípus mintát egy példán keresztül mutatjuk be: Hurrá a magyar gépkocsigyártás újra feléledt, legalábbis a példánk kedvéért. Megjött az utasítás a tehergépkocsi gyártására, kis csapatunk összedugja a fejét és úgy dönt, mer nagyban gondolkodni. Amennyiben sikeres lesz a teherautó üzletág, akkor megvehetjük a méltán híres Porsche és Aston Martin márkákat a profitból. Ezért, gondolva a jövőre első körben egy általános gépkocsi osztályt hoznak létre, mely azokat a tulajdonságokat tartalmazza, amik minden négy vagy több kerekű gépesített járműre jellemzőek. Ebből az osztályból öröklődik a nagy és erős tehergépkocsi, melynek csak pár speciális tulajdonságát kell beállítanunk. Majd ha a zsebünk tele lesz a teherautó export-import bevételeiből, és végre megvettük a fent említett márkákat, könnyű dolgunk lesz az implementáció során, hiszen egy új osztályban beállítjuk a sportkocsi végsebességét, a tankméretet kisebbre vesszük és indulhat a sorozatgyártás a gyáron keresztül, és a határ a csillagos ég vagy a Forma 1. A gyártósor egy prototípust vár. Mindegy, hogy milyen Gépkocsit kap, mindent tud gyártani, mert csak klónozza a prototípust. A klónozáson túl csak festeni tud. Szóval a gyár buta, de hatékony.<ref>http://aries.ektf.hu/~hz/pdf-tamop/pdf-xx/ProgTechJegyzet.1.1.6.pdf</ref>
 
A lenti forráskódban megfigyelhető, hogy sekély klónozást használunk. Ezt kétféleképenkétféleképpen is megírtuk. Ha a MemberwiseClone() segítségével oldjuk meg, akkor elegendő az ősbe megírni a Clone() metódust. Egyébként minden alosztályban meg kell írni. Ezt a megoldást a lenti megoldásban megjegyzések formájában látjuk.
 
===C# Forráskód===