>> if type( "This.Behavior.Name") = "C"
>
>So Behavior _is_ owned by Parent (This) in HasA relation!
Exactly.
>Call me a vegetable, but again, this I do not understand.
>
>But don't forget that Behavior
>> class has the same hook in its Click method.
>
>Recursion ???????
No. All classes have a Behavior property. But that doesn't mean there's only one Behavior object for the whole app at runtime. The whole idea is that we can have A LOT of Behavior classes. And, of course, we can instantiate and use them as we want at runtime. It's extremly flexible and it can be done at runtime.
We can have Behaviors to modify only the Click method, only MouseMove method, etc. Or Behaviors to modify security rights/levels. Or anything else we can imagine. And we can play with them as we want at RUNTIME. You don't need to subclass everytime you need to change a small thing in a class and to have an enormous pyramide/hierarchy of classes. It's enough to hook some Behaviors.
>> What's very good, it's that all these can be done at runtime. It's like you
>> would modify the hierarchy of your classes at runtime!
>>
>
>Sorry, but here you are loosing me again...
It's what I was saying a little higher.
>Thanks Vlad. It _is_ a pleasure to discuss this with you.
For me too. BTW, I just reviewed Steven Black's presentation notes from FoxTeach and he is using the name "Decorator" for Behaviors. I believe his original name is better. Because it's exactly like you would decorate things. You can decorate something that is already decorated, and so on.
See you,
Vlad