It seems to me that both ways lead to inheritance :)

I think that an interface should be used, especially if the *only*
goal of an abstract base class would be defining those two abstract
methods.

This is also more flexible because multiple interfaces inheritance is
allowed: suppose you have a validator which already extends some
class, you port it into Tomahawk and you want to add javascript
validation... where you should put your abstract base class? You can
only put it on top of all the others (but all other classes in
hierarchy must also be abstract then) or wrap the last extending class
(losing identity). Ok, maybe it isn't a common situation.. anyway with
interface approach, you simple make the last class implements
IClientSideValidator. Do you see any drawback in interfaces?


Cosma


2006/7/12, Cagatay Civici <[EMAIL PROTECTED]>:
Hi,

I'm about to finish my work on the client validation and have faced with a
design dilemma here.

There are two method getJsFunction() and getParams() that must be
implemented by extended validators so which design seem more convenient?

* Using an IClientSideValidator which will be implemented by extended
validators marking them capable of doing validation at client side.

or

* Using ValidatorBase class which is the parent of all extended validator
and declare the two methods as abstract.

I've chosen the abstract class instead of the validator although all the
design patterns books say favor composition over inheritance:) Because the
plan is to make all the extended validators capable of client side.

As a reminder of the issue;

http://www.irian.at/cagatay-validation-sandbox/home.jsf

Regards,

Cagatay

Reply via email to