Singleton คือ design pattern แบบนึง จบ
ขี้เกียจอธิบายยาว เพราะใช้เป็นอย่างเดียว 555 ไปดูรูปแบบมันจาก code ดีกว่า
- Code: Select all
class Bank {
private static Bank bank;
private Bank() {...};
public static Bank getInstance() {
if (bank != NULL)
return bank;
else {
bank = new Bank();
}
}
public void deposit() {...}
public void withdraw() {...}
public ...
}
จาก code ด้านบนจะเห็นว่า คลาส Bank สามารถสร้างออกมาได้ทางเดียวคือจาก method getInstance โดย method นี้จะมีการตรวจสอบว่าเคยมีการสร้าง instance ไว้หรือยัง ถ้าหากสร้างไว้แล้วก็เอา instance เดิมคืนให้เลย แต่ถ้ายังไม่สร้างก็จะสร้างให้ใหม่ การทำแบบนี้ทำให้จะเรียกกี่ครั้งในระบบก็จะมี Bank อยู่ Bank เดียว
ประโยชน์ของมันต้องลองเปรียบเทียบกับด้านล่างดู หากไม่ใช้ singleton
- Code: Select all
class Bank {
public static void deposit() {...}
public static void withdraw() {...}
public static ...
}
class ABank extend Bank {
...
}
class Main {
public static void main(String args[]) {
ABank a = new Abank();
ABank.deposit(); //? เอ๊ ยังสามารถเรียก method เดิมของ Bank ได้อยู่เลย
}
}
จาก code จะเห็นว่าหากไม่ใช้ singleton ยังสามารถใช้ static method ได้ แต่ถ้าหากคลาสนั้นมีการ inherit ขึ้นมา method ที่มีการทำงานของ Bank เดิมแล้วอยากจะซ่อนไว้ก็ยังสามารถเรียกใช้ได้อยู่
สำหรับ singleton ก็มีแค่นี้แหละ ว่าแต่ที่มหา'ลัย มีสอนพวก design pattern บ้างหรือยังเนี๊ยะ