[SP-pm] pool de objetos
Stanislaw Pusep
creaktive at gmail.com
Thu Mar 22 13:01:22 PDT 2012
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 em 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 <http://github.com/dvinciguerra>
>
>
> On 22 March 2012 13:01, Marcio Ferreira <marciodesouzaferreira em 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 em gmail.com> wrote:
>>
>>> >>>>> "Tiago" == Tiago Peczenyj <tiago.peczenyj em 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 em 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 em 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 em pm.org
> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
>
-------------- Pr�xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20120322/9cedc2ee/attachment.html>
More information about the SaoPaulo-pm
mailing list