Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

•Re: Re: ?Re: Change the parent of an instance

by merlyn (Sage)
on May 11, 2004 at 18:43 UTC ( #352540=note: print w/ replies, xml ) Need Help??


in reply to Re: ?Re: Change the parent of an instance
in thread Change the parent of an instance

No, I mean you plug it like this:

package Elf; sub named { my $class = shift; bless { Name => shift; Actions => Elf::Live::, Has => {}, }, $class; } sub die { shift->{Actions} = Elf::Dead::; } sub can_attack { # delegate to actions shift->{Actions}->can_attack(@_); } sub enemy_of { shift->{Actions}->enemy_of(@_); } package Elf::Live; sub can_attack { ... } sub enemy_of { ... } package Elf::Dead; sub can_attack { ... } sub enemy_of { ... }
A simple change of the Actions variable by plugging in a different "behavior container" causes a bank-switch of those behaviors to a new motif. I forget the "gang of four" pattern for this, but it's one of those. {grin}

-- Randal L. Schwartz, Perl hacker
Be sure to read my standard disclaimer if this is a reply.


Comment on •Re: Re: ?Re: Change the parent of an instance
Download Code
Replies are listed 'Best First'.
Re: •Re: Re: ?Re: Change the parent of an instance
by Fletch (Chancellor) on May 11, 2004 at 20:04 UTC
Re: ?Re: Re: ?Re: Change the parent of an instance
by muba (Priest) on May 11, 2004 at 18:47 UTC
    Ah! Now I see!

    I think it's the best idea I've seen so far, assuming re-blessing really sucks. I'll have a look at it (a big re-style of the code is now required but it's worth it).

    Just for my information, could you please tell me the disadvanteges of re-blessing?

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://352540]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (17)
As of 2015-07-30 15:29 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (272 votes), past polls