(สมมติว่ามีสภาพแวดล้อมแบบเธรดเดียว)
ฟังก์ชั่นที่ตอบสนองเกณฑ์นี้คือ:
bool MyClass::is_initialized = false;
void MyClass::lazy_initialize()
{
if (!is_initialized)
{
initialize(); //Should not be called multiple times
is_initialized = true;
}
}
ในสาระสำคัญฉันสามารถเรียกใช้ฟังก์ชั่นนี้ได้หลายครั้งและไม่ต้องกังวลกับการเริ่มทำงานMyClass
หลายครั้ง
ฟังก์ชันที่ไม่เป็นไปตามเกณฑ์นี้อาจเป็น:
Foo* MyClass::ptr = NULL;
void initialize()
{
ptr = new Foo();
}
การโทรinitialize()
หลายครั้งจะทำให้หน่วยความจำรั่ว
แรงจูงใจ
มันจะดีถ้ามีคำสั้น ๆ เพื่ออธิบายพฤติกรรมนี้เพื่อให้ฟังก์ชั่นที่คาดว่าจะได้พบกับเกณฑ์นี้สามารถแสดงความคิดเห็นได้อย่างถูกต้อง (โดยเฉพาะอย่างยิ่งมีประโยชน์เมื่ออธิบายฟังก์ชั่นอินเตอร์เฟสที่คาดว่าจะถูกแทนที่)