Você está na página 1de 2

CAP-365 Segunda Lista de Exerccios Design Patterns: podem ser feitas implementaes em JAVA ou C++.

. 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; }

A sada esperada : // value is 42 // value is 100

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

que permita que a

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();

Você também pode gostar