¿Patrón de diseño correcto?

Diego
20 de Mayo del 2006
¿Es correcto el siguiente patrón?:
...
private static Comparator<File> comparadorFechaModificado;
...
public static Comparator<File> comparadorFechaModificado(){
// Si no está construido, construyelo
if(comparadorFechaModificado==null){
comparadorFechaModificado=new Comparator<File>(){
public int compare(File archivo1,File archivo2){
// Los directorios tienen prioridad sobre los archivos
// (van primero)
if(archivo1.isDirectory()&&!archivo2.isDirectory())
return -1;
else if(!archivo1.isDirectory()&&archivo2.isDirectory())
return 1;
else{
long diferencia=archivo1.lastModified()-archivo2.lastModified();
return diferencia>0?1:diferencia==0?0:-1;
}
}
};
}
return comparadorFechaModificado;
}

Es decir, la idea es tener una clase Archivos, que contenga comparadores, filtros, etc. de archivos, pero si se construyen todos al principio, se desperdicia memoria si no se usan todos, y si se contruye uno cada vez, también pueden producirse elementos duplicados. De este modo, la solución que tomo es:

private Tipo elemento;

public Tipo elemento(){
if(elemento==null)
//construyelo
return elemento;
}

¿Es correcto?¿Cuando se construye un objeto propiedad se construye con la clase, o cuando se necesita, y estoy complicando un código que podría ser más sencillo?

Gracias por vuestra opinión.