Al momento, ho un paio di oggetti singleton in cui eseguo la corrispondenza in espressioni regolari e il mio Pattern
s è definito 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 che questo è uno stile sbagliato e Pattern
s dovrebbe sempre essere definito a livello di classe, e invece assomiglia a questo:
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 il motivo principale per cui utilizzo il primo approccio è perché non ha senso per me conservare il Pattern
s una volta che l'oggetto ottiene GC'd .
Qualche suggerimento / pensiero?