Eelco Hillenius wrote:
I guess my point is made. I'll back off for a bit and see what other
people have to say about this. Anyone's opinions are welcome, and core
developers, please contribute so that we can make this decision in
consensus.
I wouldn't call it IBehaviorProvider if it's tied into validators. ;-)
Perhaps call it IBehaviorProvidingValidator and make it extend
IValidator, so it's more obvious what's going on and what the interface
is for.
That said, I think I prefer this approach to IComponentFacet for the
following reasons:
- When a user goes CTRL+SPACE in Eclipse on their component, having an
add(IComponentFacet) method will be much more confusing and less
discoverable than add(IBehavior) and add(IValidator) methods.
As a newbie I'd be thinking, "what the hell is a facet?" whereas at
least "validator" is pretty self-explanatory.
- Conceptually, users are adding a validator. The fact that it adds a
behavior to help prevent invalid input or add feedback or whatever is
secondary to its main purpose, which is validation. It therefore
makes more sense to me that it's an IValidator first and foremost.
Putting IBehavior on a level footing with that doesn't make much
sense to me if I'm wearing my user hat.
- It's nice and simple - I don't have to think hard about whether it
might suck or not. ;-)
Regards,
Al