[P]ada tulisan sebelumnya (Berkenalan dengan Singleton Pattern) kita sudah mengetahui apa itu singleton pattern dan juga belajar menuangkannya menggunakan kode bahasa pemrograman C#. Pada bagian ini kita bersama-sama akan belajar implementasi nyata dari pattern singleton.
Di akhir artikel sebelumnya saya melontarkan pertanyaan sepert ini “Kenapa sebuah kelas perlu hanya boleh memiliki satu instance?”
Salah satu jawaban dari pertanyaan tersebut adalah pada kasus aplikasi yang menggunakan MDI (multiple document interface).
Pada aplikasi MDI ketika kita tidak menerapkan singleton maka ketika membuka sebuah form child dengan menekan sebuah menu, yang terjadi adalah penciptaan sebuah objek dari form child yang bersangkutan setiap kali tombol ditekan. Jika kita menekan menu sebanyak 5 kali maka akan ada 5 form yang sama. Tentunya yang diinginkan hanya ada 1 form.
Kode ketika memanggil form child adalah seperti ini
1 2 3 4 5 6 7 |
private void openToolStripMenuItem_Click(object sender, EventArgs e) { FormChild child = new FormChild(); child.MdiParent = this; child.Show(); child.BringToFront(); } |
Singleton pattern bisa mengatasi masalah tersebut. Pada form child ubah konstruktor menjadi private dan tambahkan kode khas singleton yang sudah kita pelajari bersama sebelumnya.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
public partial class FormChild : Form { private static FormChild instance; private FormChild() { InitializeComponent(); } public static FormChild GetInstance() { if(instance==null || instance.IsDisposed) { instance = new FormChild(); } return instance; } } |
Setelah itu ubah pemanggilan form child pada menu menjadi seperti berikut
1 2 3 4 5 6 7 |
private void openToolStripMenuItem_Click(object sender, EventArgs e) { FormChild child = FormChild.GetInstance(); child.MdiParent = this; child.Show(); child.BringToFront(); } |
Dengan menerapkan pola seperti itu maka objek form child hanya akan diciptakan ketika objek pertama kali dibuat atau ketika objek disposed (form ditutup). Ketika objek sudah ada maka tidak dibuat lagi. Kita klik menu sebanyak 5 kali hanya akan ada 1 form.
Demikianlah salah satu contoh nyata dari penggunaan singleton pattern, semoga bermanfaat 😀
Terima kasih atas penjelasannya, sangat bermanfaat ilmunya.