Actuellement, j'ai quelques objets singleton où je fais la correspondance sur des expressions régulières, et mes Pattern
s sont définis comme suit:
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 */ }
}
Mais quelqu'un m'a dit l'autre jour que c'était un mauvais style, et que Pattern
s devrait toujours être défini au niveau de la classe, et ressembler à ceci à la place:
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 durée de vie de cet objet particulier n'est pas si longue, et ma principale raison d'utiliser la première approche est parce que cela n'a pas de sens pour moi de conserver le Pattern
s une fois que l'objet est GC'd.
Des suggestions / réflexions?
la source