Se este for o caso! então... http://search.cpan.org/~swalters/Object-PerlDesignPatterns-0.03/PerlDesignPatterns.pm#FlyweightPattern
[]'s *Daniel Vinciguerra* Web Solutions Architect and Co-Owner at Bivee http://github.com/dvinciguerra <http://github.com/dvinciguerra> On 22 March 2012 13:01, Marcio Ferreira <[email protected]>wrote: > Li a thread do fim pro começo e parece que um Flyweight - até sugerido > pelo Eden - resolve isso. > > Design Pattern resolve 99% dos problemas do dia-dia =P > On Mar 22, 2012 12:29 PM, "Eden Cardim" <[email protected]> wrote: > >> >>>>> "Tiago" == Tiago Peczenyj <[email protected]> writes: >> >> Tiago> Humm... analisando o seu problema parece que o primeiro passo é >> Tiago> criar um repositorio que sabe "criar" os seus objetos. Vejo um >> Tiago> problema que é saber se o objeto esta inativo ou não, vc teria >> que >> Tiago> trabalhar com o destrutor. >> >> Pensando bem, acho que o que o OP, quis dizer com ativo/inativo é que ele >> talvez ele queira objetos com atributos intrínsecos (imutáveis) e >> extrínsecos >> (mutáveis). Nesse caso, se "configura" o objeto singleton que vem do pool >> com >> um outro objeto (o contexto), que em perl pode ser qualquer coisa, pra >> baratear o custo de criação, e o Moose já vem com suporte pra tudo isso: >> >> --8<---------------cut here---------------start------------->8--- >> package MyObj; >> >> has foo => (isa => 'Foo', is => 'ro', required => 1); >> has bar => ( >> isa => 'HashRef', >> is => 'rw', >> clearer => 'clear_bar', >> predicate => 'is_active', >> traits => ['Hash'], >> handles => { >> baz => [ get => 'baz' ], >> quux => [ get => 'quux' ] >> } >> ); >> >> package main; >> my $pool = container 'MyApp' => as { >> service 'myobj' => ( >> class => 'MyObj', >> lifecycle => 'Singleton', >> dependencies => depends_on('foo') >> ); >> service 'foo' => 'bahhhh'; >> }; >> >> my $obj = $pool->resolve(service => 'myobj'); # pegar objeto singleton >> my $guard = guard { $obj->clear_bar }; # criar "desativador" >> >> $obj->is_active; # false >> >> $obj->bar({ baz => 'moo', quux => 'oink' }); # configurar o contexto >> >> $obj->is_active; # true >> $obj->foo; # bahhhh >> $obj->baz; # moo >> $obj->quux; # oink >> --8<---------------cut here---------------end--------------->8--- >> >> -- >> Eden Cardim Need help with your Catalyst or DBIx::Class >> project? >> Code Monkey http://www.shadowcat.co.uk/catalyst/ >> Shadowcat Systems Ltd. Want a managed development or deployment >> platform? >> http://edencardim.com http://www.shadowcat.co.uk/servers/ >> =begin <http://www.shadowcat.co.uk/servers/=begin> disclaimer >> Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ >> SaoPaulo-pm mailing list: [email protected] >> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> >> =end disclaimer >> > > =begin disclaimer > Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ > SaoPaulo-pm mailing list: [email protected] > L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> > =end disclaimer > >
=begin disclaimer Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ SaoPaulo-pm mailing list: [email protected] L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> =end disclaimer
