ในบางครั้งนั้นเราจำเป็นจะต้องใช้ 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