Escolar Documentos
Profissional Documentos
Cultura Documentos
. Cada exerccio pode ser feito em um nico arquivo .cpp com as classes e o main pedido. 1) Singleton: Construa uma classe Number, usando o padro Singleton que permita que a aplicao abaixo funcione.
int main() { Number myInstance; // DEVE CAUSAR ERRO DE COMPILAO Number::instance()->setValue( 42 ); cout << "value is " << Number::instance()->getValue() << endl; Number::setType( "octal" ); Number::instance()->setValue( 64 ); cout << "value is " << Number::instance()->getValue() << endl; }
2) Factory: Construa as classes necessrias para suportar o padro Abstract aplicao abaixo funcione.
int main() { #ifdef PORTUGUES Factory* #elif INGLES Factory* #endif Message* messages[3]; messages[0] = factory->createMessage1(); messages[1] = factory->createMessage2(); messages[2] = factory->createMessage3(); for (int i=0; i < 3; i++) messages[i]->print();} factory = new EnglishMessageFactory; factory = new PortugueseMessageFactory; Factory
2) Factory e Singleton: Agora combine os dois padres de forma que exista na aplicao inteira uma nica fbrica de mensagens. Que pode ser configurada em algum lugar na aplicao principal. As rotinas da aplicao no devem se preocupar com qual a fbrica que est sendo usada no momento.
void rotina1() { MessageFactory::instance()->createMessage1()->print(); } void rotina2() { MessageFactory::instance()->createMessage1()->print(); } int main() { MessageFactory::instance()->setLanguage(1); rotina1(); rotina2(); MessageFactory::instance()->setLanguage(2); rotina1(); rotina2();