วันศุกร์ที่ 14 มกราคม พ.ศ. 2554

Singleton Patterns

Singleton Patterns

Singleton คือ การทำให้มี object เดียวเท่านั้นในระบบ ยกตัวอย่าง เช่น


class Env{

  static Env env;

  //Prevent new instance

  private Env(){

  }

  public static Env getInstance(){

     if(env ==null)

     return new Env();

  }

}


class Test{

  public static void main(String[] args){

     Env env = Env.getInstance();

     Env env2 = Env.getInstance();

     // จะสังเกตว่า Object ที่ถูกสร้างขึ้นจะเป็น Instance เดียวกัน

  }

}


ประโยขน์ของ Singleton class ที่ใช้บ่อยๆไม่จำเป็นที่จะต้องสร้างขึ้นมาทุกครั้งที่มีการใช้งาน ทำให้ระบบมีประสิทธิภาพ(performance)ที่ดีขึ้น


แต่ก็มีคำถามว่่า ต่างจาก static method อย่างไร

static method จะเก็บ state หรืออ้างถึงออปเจกอื่นที่ไม่ใช่ static ด้วยกันไม่ได้

ในขณะที่ถ้าเป็น singleton object จะสามารถจัดการกับออปเจกอื่นได้ครับ