Dans ma classe Viewer, je déclare un objet de type ViewerFactory
Chaque class publique est dans son propre fichier .java
En gros la factory detache l'endroit ou l'on cree et instancie la Viewer du code principal. Commes les factory sont elles-memes abstraite on peut en creer un plusieurs types/variantes (une pour chaque viewer par exemple*).
*Rien n'empeche de faire une factory qui supporte plusieurs types de viewer. Ou un viewer qui supporte plusieurs formats de fichiers.
Ca evite de coder en dur dans le code de la GUI un truc de ce genre :
1 2 3 4 5 6
|
...
else if (extension.equals("pdf") {
...
}
else if (extension.equals(... |
sur 3Km de long.
Ici cet unique et simple bloc peut instancier tout et nimporte quoi :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
Viewer viewer = null;
try {
ViewerFactory factory = ViewerFactory.getFactoryForFileFormat(extension);
viewer = factory.createViewer(file);
}
// File format not supported.
catch (UnsupportedFileFormat ufe) {
...
}
// File is BAD.
catch(InvalidFileFormatException iffe) {
...
}
if (viewer != null) {
// Add the viewer to the GUI
...
} |
Mais rien ne t'oblige a utiliser ce pattern il est toujours possible de coder "normalement" meme si ce n'est pas toujours une solution "correcte" (tout depend tu point de vue et de la destination du programme. Trop de pattern nuit parfois.... pas assez egalement).
Partager