Very nice :D Valeu pelas ótimas referências, vou pesquisar aqui. ++Eden, pq não escreve um artigo sobre o Bread::Board?
ABS() On Thu, Mar 22, 2012 at 13:52, Daniel Vinciguerra <[email protected] > wrote: > 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 > >
=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
