[SP-pm] pool de objetos

Tiago Peczenyj tiago.peczenyj at gmail.com
Thu Mar 22 14:06:10 PDT 2012


Ou grava um screencast!

On Thu, Mar 22, 2012 at 5:01 PM, Stanislaw Pusep <creaktive at gmail.com> wrote:
> 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
> <dan.vinciguerra at gmail.com> 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
>>
>>
>> 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 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
>>>
>>
>>
>> =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
>



-- 
Tiago B. Peczenyj
Linux User #405772

http://pacman.blog.br


More information about the SaoPaulo-pm mailing list