Pattern (minta) kialakítása a prototípus (prototípus)
Kinevezés minta Prototype
Minta Prototype (Prototype) lehet használni a következő esetekben:
Gyár eljárás mintázat is teszi a rendszer független a típusától generált tárgy, hanem azt, hogy bevezeti párhuzamos hierarchiáját osztályok minden típusú létrehozandó objektum jelen kell lenniük megfelelő osztályú gyár, amely nemkívánatos lehet. Prototype minta nem rendelkezik ezzel a hátránnyal.
Leírás Prototype minta
Ahhoz, hogy új tárgyakat minta Prototype használ prototípusok. A prototípus - az már létezik egy tárgy rendszer, amely támogatja a klónozás művelet, amely képes arra, hogy hozzon létre egy másolatot is. Így, hogy hozzon létre egy objektumot egy bizonyos osztály elvégzésére elég klón () működéséhez a megfelelő prototípus.
Prototype minta végrehajtási ezt a viselkedést a következő: minden osztály, tárgyak kíván létrehozni kell alosztályok közös elméleti alap osztály. Ez a bázis osztályba kell jelentenie, egy interfészt módszerrel klón (). Itt is lehet nyilvánítani virtuális és egyéb közös módszerek, például inicializálja (), ha a klónozás után a szükséges inicializáló az újonnan létrehozott objektumot. Minden származtatott osztályok végre kell hajtania a klón () metódus. A C ++, hogy hozzon létre másolatokat objektumok által használt példányt kivitelező azonban általában objektumok létrehozásához használja a másolás nem szükséges.
UML-osztály diagram mintázás Prototype

A generál valamilyen tárgy a rendszernek alkalmasnak kell lennie annak mintapéldánya. A prototípus a tárgya azonos típusú, az egyetlen, amelynek célja, hogy hozzon létre olyan tárgyakat is. Általában a kényelem minden meglévő rendszer prototípusok szerveződnek különgyűjteményeit tárolás vagy a nyilvántartások a prototípusok. Ilyen adatok lehetnek a végrehajtása egy asszociatív tömböt, melynek minden eleme egy pár „Type ID” - „prototípus”. prototípusok nyilvántartás lehetővé teszi, hogy hozzáadni vagy eltávolítani egy prototípus, és hozzon létre egy objektum típusú azonosító. Ez a művelet a dinamikus hozzáadása és eltávolítása a prototípusok a boltban rugalmasabb rendszer, amely lehetővé teszi, hogy kezelje a folyamat új tárgyakat.
Végrehajtási mód Prototype
Itt látható a végrehajtás egy minta Prototype példáján épület hadseregek katonai stratégia „pun háborúk”. A részletes leírást a játék megtalálható a szakaszban generálása mintákat. Egyszerűsítése érdekében a minta kód létrehoz katonai karakterek egy absztrakt hadsereg figyelembe vétele nélkül a sajátosságait a hadviselő felek.
Csakúgy, mint a gyári módszer mintázat találmány két lehetséges megvalósításai a minta prototípus, nevezetesen:
- Egy általános tervező alapján prototípusok, ha egy polimorf alap osztály prototípus meghatározott statikus módszer az objektumok létrehozásához. Ugyanakkor, mint a paraméter ez a módszer kell továbbítani ID objektum típusát, hogy hozzon létre.
- Alapján egy dedikált class-gyárban.
Végrehajtás Ptototype minta alapján általános tervező
A fenti megvalósítási osztályokat előállított valamennyi katonai egységeket, például íjászok gyalogos és lovas alosztálya absztrakt szülőosztály Warrior. Ez az osztály definiál egy generikus kivitelező, mint egy statikus módszer createWarrior (Warrior_ID id). Beküldésével ez a módszer, mint a paraméter típusa harci egység, harcosok létre tudja hozni a megfelelő típusú csapatok. Erre általános kivitelező használja prototípus nyilvántartás, megvalósítva az asszociatív tömb std :: map, melynek minden eleme egy pár „harcos típus azonosító” - „prototípus”.
Hozzáadása prototípusok a nyilvántartásban automatikusan. Ez történik az alábbiak szerint. Az alosztályok baka, Archer, lovas, prototípusok meghatározása a statikus adatokat tagjai azonos típusú. Amikor létrehoz egy prototípus lesz az úgynevezett konstruktor egy típusú paramétert Dummy, hogy ki fogja felvenni a prototípust prototípus registry segítségével addPrototype () metódus a szülő osztály harcos. Fontos, hogy ezen a ponton a regisztrációs tárgy maga már teljesen felépített, ezért úgy tervezték, mint egy szingli Meyers.
Egy adott végrehajtási Prototype mintázat jellemzői a következők:
- Új harcosok is csak az általános tervezője. Azok közvetlen teremtés lehetetlen, mivel a megfelelő kivitelező nyilvánítják saját hozzáférést adja meg.
- Nincs végrehajtásának hiánya alapján általánosított minta tervezője Gyár eljárás. nevezetesen az alap osztály harcos semmit sem tud a alosztálya.
Végrehajtása Prototype minta egy dedikált class-gyár
A fenti végrehajtását, hogy egyszerűsítse a kódnyilvántartásának prototípusok nem végzik el. Katonák összes karok segítségével létrehozott megfelelő módszerek gyári osztály PrototypeFactory, ahol a prototípusok definiált statikus változókat.
Alkalmazásának eredményeit mintázás Prototype
Előnyök minta Prototype
- Hogy új tárgyakat az ügyfél nem kell tudni a konkrét osztályok.
- A rugalmasság kezelni a folyamat létrehozása új objektumok, lehetővé téve a dinamikus hozzáadása és eltávolítása a prototípusok a registry-ben.