Obecnie mam kilka pojedynczych obiektów, w których dopasowuję wyrażenia regularne, a moje Pattern
s są zdefiniowane w następujący sposób:
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 */ }
}
Ale ktoś mi kiedyś powiedział, że to zły styl, i zawszePattern
należy je definiować na poziomie klasy, a zamiast tego wyglądać mniej więcej tak:
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 */ }
}
Żywotność tego konkretnego obiektu nie jest tak długa, a moim głównym powodem zastosowania pierwszego podejścia jest to, że nie ma sensu trzymać Pattern
się litery s, gdy obiekt otrzyma GC.
Wszelkie sugestie / przemyślenia?
źródło