Przejdź do głównej zawartości

Posty

Wyświetlanie postów z kwiecień, 2013

Fabryka

Witam, dawno mnie tu nie było i nie mam dobrego usprawiedliwienia tego stanu rzeczy. W tym artykule przeanalizujemy wzorzec projektowy fabryka (factory, wirtualny konstruktor, metoda wytwórcza). Sprawa jest dość prosta wzorzec ten opisuje sytuacje w której proces tworzenia obiektu delegowany jest do specjalnej klasy(functora lub zwykłej funkcji lub singletona). Korzyść z takiego podejścia to scentralizowanie tworzenia skomplikowanych obiektów będących podklasami jednego ogólnego obiektu. Poniżej uogólniona implementacja metody wytwórczej: template <typename T> class Factory { public:   static Factory<T>& getInstance()   {     static Factory<T>* instance = NULL;     if(!instance)     {       std::lock_guard<std::mutex> guard( Factory<T>::factoryCreationMutex );       if(!instance)       {         instance = new Factory<T>();       }     }     return *instance;   }   T* createObject(std::stri