ขณะนี้ฉันมีวัตถุซิงเกิลสองสามตัวที่ฉันจับคู่กับนิพจน์ทั่วไปและคำPattern
นิยามของฉันเป็นดังนี้:
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 */ }
}
แต่ผมก็บอกคนในวันอื่น ๆ ที่ว่านี้เป็นรูปแบบที่ไม่ดีและPattern
ควรเสมอจะกำหนดไว้ในระดับชั้นเรียนและสิ่งที่มีลักษณะเช่นนี้แทน:
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 */ }
}
อายุการใช้งานของวัตถุนี้ไม่นานนักและเหตุผลหลักของฉันในการใช้วิธีแรกก็คือเพราะมันไม่สมเหตุสมผลที่ฉันจะยึดมั่นกับPattern
s เมื่อวัตถุได้รับ GC'd
ข้อเสนอแนะ / ความคิดใด ๆ