Sunday, June 9, 2013

Singleton Pattern

Singleton Pattern
ในบางครั้งนั้นเราจำเป็นจะต้องใช้ Object ตัว ๆ หนึ่งแล้ว แต่เราไม่ต้องการ New Object ขึ้นมาใหม่เรื่อย ๆ ซึ่งทำให้ค่าของการบันทึกที่เคยใช้งานมาแล้ว กลับมาสู่ค่าเริ่มต้น จนกระทั่งจนกว่าโปรแกรมจะปิดไป อย่างเช่น ค่า Config ของตัวโปรแกรม หรือไม่ก็พวก Data ที่เราต้องการใช้ในระดับ Global Object ทางออกของการออกแบบ Object Singleton Pattern ก็เพื่อการนี้

หลักการง่าย ๆ คือ มันจะ New Object ขึ้นมาครั้งเดียวตลอด Life Circle ของโปรแกรมจนกว่าจะ Terminate ไป

รูปปลากรอบ (ราดพริกใส่ซอสอร่อยเหาะ)

จะเห็นได้จาก UML ว่าจะมี intance กำหนดการชี้เข้าหาตัวเอง โดยที่ getInstance จะเป็นการเรียก Object นี้เอาไปใช้

Example Code
class Singleton
{
 private static Singleton instance;
 private Singleton()
 {
  ...
 }

 public static synchronized Singleton getInstance()
 {
  if (instance == null)
   instance = new Singleton();

  return instance;
 }
 ...
 public void doSomething()
 {
  ... 
 }
}


เวลานำไปใช้งาน จะกำหนด Object ให้มีค่าเป็น static ก่อนก็ได้ และใช้ค่า instace ไปเก็บ หรือจะเรียกทั้ง .getInstace() ไปเลยก็ได้

คงได้ประโยชน์ไม่มากก็น้อยนะครับจาก Singleton Class (คลาสคนโสดมีเพียงได้แค่ 1 เดียว)

No comments:

Post a Comment