Gyári minta C++ nyelven

Gyari Minta C Nyelven



A gyári minta egy módja annak, hogy objektumokat hozzon létre a szoftverfejlesztés során anélkül, hogy ismernie kellene a létrehozásuk konkrét részleteit. Egyszerűsített felületet biztosít az objektumok létrehozásához azáltal, hogy a komplex létrehozási logikát egy gyári osztály mögé rejti. Az objektum-létrehozási mechanizmusokkal foglalkozó tervezési minták kategóriájába tartozik. Ez a cikk a C++ gyári mintáit ismerteti.

Bevezetés a gyári mintába

A tervezési minta egy módszer a szoftvertervezés visszatérő problémáinak megoldására. A gyári minta egyike azoknak a tervezési mintáknak, amelyek segítenek az objektumok rugalmas és független módon történő létrehozásában.

A Factory Pattern egy olyan C++-ban kialakított tervezési minta, amely lehetővé teszi az objektumok létrehozását anélkül, hogy kifejezetten ismernénk az objektum osztályát. Módot biztosít az összetett objektum-létrehozási logika külön gyári osztályba foglalására. Ez egy közös interfész definiálásával történik az objektumok létrehozásához, ahol az objektum adott osztálya futás közben kerül meghatározásra.







Ahelyett, hogy közvetlenül hoznánk létre egy objektumot, a gyári módszert használjuk, hogy megadjuk a kívánt objektum példányát. Így elrejthetjük az objektum létrehozásának bonyolult lépéseit, és egyszerűbbé tehetjük az objektum későbbi megváltoztatását vagy módosítását.



Miért használja a gyári mintát?

Több oka is lehet annak, hogy miért szeretnénk a gyári mintát használni. Ennek egyik oka az, hogy lehetővé teszi a kód leválasztását bizonyos osztályoktól. Egy gyári módszer használatával egyszerűen kicserélhetjük egyik osztályt a másikra anélkül, hogy bármilyen más kódot kellene módosítanunk és hatékonyabbá kellene tenni.



A gyári minta használatának másik oka az, hogy ez tesztelhetőbbé teheti a kódot. A gyári minták lehetővé teszik a kód tesztelését álobjektumok létrehozásával.





Íme néhány további ok, amiért a gyári mintát használják a C++ nyelvben:

  • A Factory Method mintát akkor használják, ha egy osztály nem tudja előre, hogy milyen objektumokat kell létrehoznia.
  • A mintát akkor használják, ha egy osztály az alosztályaira támaszkodik az általa létrehozott objektumok meghatározásához.
  • Hasznos, ha egy összetett objektum létrehozásának logikáját egy helyen kívánja magába foglalni.

Példa a gyári mintára C++ nyelven

C++-ban a gyári mintát úgy tudjuk megvalósítani, hogy virtuális gyári metódussal egy absztrakt alaposztályt definiálunk. Ennek a metódusnak vissza kell adnia egy mutatót a kívánt osztálypéldányra. Ezután ebből az alaposztályból konkrét osztályokat származtathatunk, és felülírhatjuk a gyári metódust, hogy a megfelelő osztály példányát adjuk vissza.



Íme egy példa arra, hogyan használhatjuk a gyári minta ezen megvalósítását:

#include

névtér std használatával ;

osztály Forma {

nyilvános :

virtuális üres húz ( ) = 0 ;

statikus Alak * CreateShape ( int típus ) ;

} ;

osztályos Kör : nyilvános Alak {

nyilvános :

üres húz ( ) {

cout << – Kör rajzolása. << endl ;

}

} ;

osztályú Téglalap : nyilvános Alak {

nyilvános :

üres húz ( ) {

cout << – Téglalap rajzolása. << endl ;

}

} ;

Alak * Alak :: CreateShape ( int típus ) {

ha ( típus == 1 ) {
Visszatérés új Kör ( ) ;
} más ha ( típus == 2 ) {
Visszatérés új téglalap ( ) ;
} más {
Visszatérés nullptr ;
}
}


int fő- ( ) {

Alak * kör = Alak :: CreateShape ( 1 ) ;

kör -> húz ( ) ;

Alak * téglalap = Alak :: CreateShape ( 2 ) ;

téglalap -> húz ( ) ;

Visszatérés 0 ;

}

Ebben a példában van egy Shape osztályunk, amelynek két származtatott osztálya van: Circle és Rectangle. A Shape osztálynak van egy tiszta virtuális draw() függvénye, amelyet a származtatott osztályok valósítanak meg. A Shape osztálynak van egy statikus függvénye is createShape(int type), amely gyári metódusként működik a származtatott osztályok példányainak létrehozásához a megadott típus alapján. A draw() függvény meghívásra kerül a létrehozott objektumokra, hogy bemutassa sajátos viselkedésüket.

  Szöveget, betűtípust és képernyőképet tartalmazó kép automatikusan generálódik

Következtetés

A Factory Pattern egy olyan C++-ban kialakított tervezési minta, amely lehetővé teszi az objektumok létrehozását anélkül, hogy kifejezetten ismernénk az objektum osztályát. Egyszerűsített felületet biztosít az objektumok létrehozásához azáltal, hogy a komplex létrehozási logikát egy gyári osztály mögé rejti. Ez egy közös interfész definiálásával történik az objektumok létrehozásához, ahol az objektum adott osztálya futás közben kerül meghatározásra. A gyári mintákról ebben a cikkben olvashat bővebben.