PDA

Visualizza la versione completa : [c++]oop creazionali


giuseppe500
19-04-2010, 15:44
ciao ho questo spezzone di codice tratto dal libro della gang of four .
Essendo a "digiuno" ho letto solo qualcosa sui template mi chiedo come funziona il codice.
E' un pattern creazionale , una factory , ma non riesco a capire come funzioni esattamente.
In particolare da quello che ho capito ipattern creazionali si occupano come dice il nome della creazione degli oggetti.
ma perchè?
qualcosa ho capito :
1)per rendere piu' comodo il refactoring?
2)per utilizzare diverse famiglie di oggetti parallelizzate? sull'esempio dell' inerfacce grafiche.
3)per frammentare il problema e gestirlo parte per parte.

quali altre utilità ha un pattern creazionale?

passo il codice ela nota:

Using templates to avoid subclassing. As we've mentioned, another potential problem with factory methods
is that they might force you to subclass just to create the appropriate Product objects. Another way to get
around this in C++ is to provide a template subclass of Creator that's parameterized by the Product class:



class Creator {
public:
virtual Product* CreateProduct() = 0;
};
template <class TheProduct>
class StandardCreator: public Creator {
public:
virtual Product* CreateProduct();
};
template <class TheProduct>
Product* StandardCreator<TheProduct>::CreateProduct () {
return new TheProduct;
}
With this template, the client supplies just the product class—no subclassing of Creator is required.
class MyProduct : public Product {
public:
MyProduct();
// ...
};
StandardCreator<MyProduct> myCreator;



grazie.

Loading