I think the difference between sub classing and static factory methods is a 
matter of taste in this case.

If I have many fields, I'd need many classes for them. So I'd group them in a 
sub package. In the case of factory methods I'd group the methods to create 
fields in a class instead of a package.

Subclass:

1    class UserEmailField extends TextField {
2      public UserEmailField(String id, IModel model) {
3        super(id, model);
4        setRequired(true);
5        add(EmailAddressValidator.getInstance())
6        add(UniqueValidator.unique(SystemUser.class, "email"));
7      }
8    }

Factory method:

1    public static TextField emailTextField(String id){
2        return (TextField) new TextField(id)
3                    .setRequired(true)
4                    .add(EmailAddressValidator.getInstance())
5                    .add(UniqueValidator.unique(SystemUser.class, "email"));
6    }

Your answer shows me, that there is no dramatically simpler way to do this. If 
you ignore the two lines for factory class declaration factory methods are even 
a bit shorter. Or is there an advantage of sub classing that I have missed?

Regards,
Christian



----- Ursprüngliche Mail ----
> Von: Igor Vaynberg <[email protected]>
> An: [email protected]
> Gesendet: Freitag, den 8. Mai 2009, 09:08:34 Uhr
> Betreff: Re: How to avoid code duplication on forms?
> 
> much simpler
> 
> class UserEmailField extends TextField {
>   public UserEmailField(String id, IModel model) {
>     super(id, model);
>     add(EmailAddressValidator.getInstance())
>     add(UniqueValidator.unique(SystemUser.class, "email"));
>    }
> }





---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to