[SP-pm] pool de objetos

Daniel Vinciguerra dan.vinciguerra at gmail.com
Thu Mar 22 09:52:41 PDT 2012


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 <marciodesouzaferreira at gmail.com>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" <edencardim at gmail.com> wrote:
>
>> >>>>> "Tiago" == Tiago Peczenyj <tiago.peczenyj at gmail.com> 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: SaoPaulo-pm at pm.org
>>  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: SaoPaulo-pm at pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20120322/3a2de916/attachment.html>


More information about the SaoPaulo-pm mailing list