Wzorce projektowe
metoda wytwórcza
[wzorzec projektowy] Dostarcza interfejs do tworzenia obiektów, gwarantując jednocześnie możliwość zmiany obiektów jakie będą tworzone przez wzorzec w klasach potomnych.Budowa wzorca projektowego
class TProduct
{
public:
virtual void Open( const char * sFileName ) { };
virtual ~TProduct() { }
};
enum ProductTypeE { E_UNKNOWN, E_PRODUCT_1, E_PRODUCT_2, E_PRODUCT_3 };
class TCreator
{
public:
TProduct * OpenDocumenct( const char * sFileName )
{
TProduct * pProduct = CreateProduct();
if( !pProduct )
return NULL;
pProduct->Open( sFileName );
return pProduct;
}
TProduct * OpenDocumenct( const char * sFileName, ProductTypeE eProductType )
{
TProduct * pProduct = CreateProduct( eProductType );
if( !pProduct )
return NULL;
pProduct->Open( sFileName );
return pProduct;
}
protected:
virtual TProduct * CreateProduct() = 0;
virtual TProduct * CreateProduct( ProductTypeE eProductType ) = 0;
};
class CMyProduct1
: public TProduct
{
};
class CMyProduct2
: public TProduct
{
};
class CMyProduct3
: public TProduct
{
};
class CMyCreator
: public TCreator
{
protected:
virtual TProduct * CreateProduct()
{
return new CMyProduct1;
}
virtual TProduct * CreateProduct( ProductTypeE eProductType )
{
switch( eProductType )
{
case E_PRODUCT_1:
return new CMyProduct1;
case E_PRODUCT_2:
return new CMyProduct2;
case E_PRODUCT_3:
return new CMyProduct3;
default:
return NULL;
}
}
};
Opis szczegółowy
Metoda wytwórcza (
ang. factory method) - wzorzec projektowy, który dostarcza interfejs do tworzenia obiektów, gwarantując jednocześnie możliwość zmiany obiektów jakie będą tworzone przez wzorzec w klasach potomnych.
Zastosowanie
Niniejszy wzorzec projektowy stosuje się gdy:
Zagadnienia powiązane
leniwa inicjalizacja | Opóźnia tworzenie obiektu do chwili w której następuje jego pierwsze użycie. (wzorzec projektowy) |
---|
Wszystkie teksty są chronione prawami autorskimi. Kopiowanie lub rozpowszechnianie treści poza niniejszym serwisem
jest zabronione.
Powyższe ograniczenie nie dotyczy autora opracowania, któremu przysługuje prawo do rozpowszechniania własnego tekstu wedle własnego uznania.