[S]ingleton adalah sebuah pattern dalam pemrograman yang bertujuan agar sebuah kelas hanya dapat memiliki sebuah instance, tidak seperti pada kelas yang tidak menerapkan pattern ini dimana bisa ada banyak instance yang tercipta.
Hanya terdapatnya satu instance dari sebuah kelas sangat bergantung dari bagaimana cara untuk membuat instance tersebut. Jika biasanya kita membuat sebuah instance dengan menggunakan new, maka tidak demikian untuk singleton.
Mari langsung saja ke kodenya. Berikut adalah kode kelas yang menerapkan pattern Singleton
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public class Singleton { private static Singleton instance; private Singleton(){} public static Singleton GetInstance() { if(instance==null) instance=new Singleton(); return instance; } } |
Constructor dari kelas di atas adalah private, hal ini dimaksudkan agar kelas ini tidak bisa di-instance-kan menggunakan new melalui constructor-nya
1 2 |
//dihindari Singleton singleton=new Singleton(); |
Sebagai ganti untuk membuat instance maka dibuat method GetInstance(), didalamnya dilakukan pengecekan apakah instance bernilai null atau tidak, jika null maka buat instance baru jika tidak null yang berarti instance sudah ada maka langsung saja dikembalikkan, tidak perlu membuat instance baru.
Pengecekan di atas memastikan bahwa hanya akan ada satu instance dari kelas tersebut, tidak lebih. Jadi seperti ini cara membuat instance-nya
1 |
Singleton single=Singleton.GetInstance(); |
Ngomong-ngomong bagaimana membuktikan bahwa kelas yang menerapkan singleton benar-benar hanya selalu memiliki satu instance?. Bisa di cek menggunakan operator == . Seperti ini contohnya
1 2 3 4 5 6 7 |
Singleton single=Singleton.GetInstance(); Singleton anotherSingle=Singleton.GetInstance(); if(single==anotherSingle) { Console.WriteLine("Same Object"); } |
Terbukti kan? 😀
Setelah paham bagaimana cara kerja dan membuat kelas singleton seharusnya timbul pertanyaan : “Kenapa sebuah kelas perlu hanya boleh memiliki satu instance?”. Untuk menjawabnya akan saya tunjukkan pada tulisan selanjutnya 😉
Semoga bermanfaat