2010-12-07 7 views
2

I ont une série de méthodes utilitaires statiques de cette forme:modèles de conception Java créationnel en oscillation

StringBuffer Util.doA(String arg0, String arg1, SomeEnum e); 
StringBuffer Util.doB(String arg0, String arg1); 
StringBuffer Util.doC(String arg0, String arg1, String arg2,String arg3); 
StringBuffer Util.doD(String arg0, String arg1, String arg2,String arg3, AnotherEnum e); 
etc 

je veux afficher un JDialog qui est créée dynamiquement par exemple via le constructeur ou un autre modèle et une fois qu'un bouton est pressé, je veux appeler la méthode utilitaire appropriée en fonction du type de boîte de dialogue.
E.g. Si JDialog est de type A l'actionlistener du bouton devrait appeler le Util.doA en passant des données d'arguments des champs d'entrée et si JDialog est de type B je veux l'actionlistener du bouton pour appeler Util.doB etc.
Les types A, B etc. sont mes types faits sur commande. Ne sont pas obligatoires pour être utilisés. Je les ai juste pour faire la distinction entre chaque JDialog. JDialog de type A diffère de JDialog de type B dans certains champs de saisie. Mais l'apparence générale est similaire.
Totalement, il y a environ 20 types et 20 méthodes util correspondantes.
Existe-t-il un modèle standard pour ce problème?
J'ai commencé à étendre JDialog afin que chaque JDialog personnalisé se crée correctement et la méthode de actionlistener appelle la méthode utilitaire appropriée, mais je me retrouve avec 20 nouvelles classes.
J'ai donc pensé que s'il y avait une meilleure approche à cela. Des idées?

Merci

+1

Je ne sais pas pour vous, mais sur, par exemple. Le bouton 'JDialog A', quand j'implémente le' actionPerformed() ', j'appelle' Util.doA (Chaîne arg0, Chaîne arg1, SomeEnum e); 'et je continuerai pour chaque JDialog. –

+0

@The Gentleman Elite: Comme mentionné, je l'ai fait comme vous le dites.Mais j'ai fini avec 20 nouvelles classes étant introduites (un pour chaque boîte de dialogue). Je pensais qu'il y avait peut-être un modèle pour réduire les classes. – Cratylus

Répondre

2

Mettez la méthode util correspondante dans les 20 types. S'il y a une duplication entre les types, vous pourriez être en mesure de le déplacer vers une super classe.

En ce qui concerne votre question, je pense que c'est l'approche optimale dans votre cas. Si vous avez le dialogue et le code util dans une classe et rien de plus, alors il est clair quel est le but de cette classe. Cela signifie également que si vous devez supprimer, modifier, ajouter un nouveau type, vous devez uniquement supprimer une classe, modifier une classe ou créer une nouvelle classe. Garder tout le code associé empêche "la chirurgie Shotgun".

Questions connexes