Attualmente, ho un paio di oggetti singleton in cui sto facendo corrispondenze su espressioni regolari e i miei Pattern
sono definiti in questo modo:
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 */ }
}
Ma l'altro giorno mi è stato detto da qualcuno che questo è un cattivo stile, e che Pattern
s dovrebbe sempre essere definito a livello di classe, e invece dovrebbe assomigliare a qualcosa del genere:
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 durata di questo particolare oggetto non è così lunga, e la mia ragione principale per usare il primo approccio è perché non ha senso trattenermi Pattern
dopo aver ottenuto GC.
Qualche suggerimento / pensiero?