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]