Actualmente, tengo un par de objetos singleton donde estoy haciendo coincidir expresiones regulares, y mis Pattern
s se definen así:
class Foobar {
private final Pattern firstPattern =
Pattern.compile("some regex");
private final Pattern secondPattern =
Pattern.compile("some other regex");
// more Patterns, etc.
private Foobar() {}
public static Foobar create() { /* singleton stuff */ }
}
Pero alguien me dijo el otro día que este es un mal estilo, y que los Pattern
s siempre deben definirse a nivel de clase , y en su lugar debería verse así:
class Foobar {
private static final Pattern FIRST_PATTERN =
Pattern.compile("some regex");
private static final Pattern SECOND_PATTERN =
Pattern.compile("some other regex");
// more Patterns, etc.
private Foobar() {}
public static Foobar create() { /* singleton stuff */ }
}
La vida útil de este objeto en particular no es tan larga, y mi razón principal para usar el primer enfoque es porque no tiene sentido retener el Pattern
s una vez que el objeto obtiene GC.
¿Alguna sugerencia / pensamiento?
fuente