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 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
