Thx, can you be more specific? I'm looking for reasons.

Door>>open, close (delegating to state)
OpenedDoorState>>close
ClosedDoorState>>open

delegation, empty methods, throwing exceptions, that all seems just ugly,
I don't want anybody looking in methods browser
to think that every door can be closed or opened,
because that's not right.

maybe I don't want object to become another object, maybe I just want to
change its class? (is it possible?)

I want empty Door class (or implementing only things possible with any door)
and subclasses representing their states.



Dne Mon, 02 May 2011 14:19:31 +0200 Stéphane Ducasse <[email protected]> napsal(a):

Do not use become: for state pattern. It is not worth.

Stef

On May 2, 2011, at 3:11 PM, [email protected] wrote:

I see that #become: is hard to follow in code (either for human or analysis tools)

I'm trying to express state-pattern:

OpenedDoor>>close
ClosedDoor>>open

And I would like to avoid this:
Door>>close
        state close.
Door>>open
        state open.

Because if Door cannot be opened depending on its current state, IMHO no method should be
there. Which is why become: seems as the best fit.


I would also like to know why proxy is considered better, because #messageNotUnderstood
seems pretty magic too. (except the fact that become: can crash VM)


Dne Mon, 02 May 2011 14:39:40 +0200 Mariano Martinez Peck <[email protected]> napsal(a):

2011/5/2 [email protected] <[email protected]>


I've heard that become: is considered to be magic
and should be avoided and replaced by either AOP or proxies,


That's "normally" true. But it depends what are you doing. For a normal app,
busieness, etc, it is not likely you will need a #become:.
However, if you are doing low level stuff, frameworks or hacky things you
may need it.

Can you tell us what are your needs and why you would like to use #become:?
or you just want to know about it?


I googled a little but I couldn't find anything more concrete.

Does anybody have any link or opinion about that?
I'd be glad to hear something more about it.

Thx

--
Tato zpráva byla vytvořena převratným poštovním klientem Opery:
http://www.opera.com/mail/






--
Tato zpráva byla vytvořena převratným poštovním klientem Opery: http://www.opera.com/mail/





--
Tato zpráva byla vytvořena převratným poštovním klientem Opery: http://www.opera.com/mail/

Reply via email to