Berkenalan dengan Singleton Design Pattern

contoh singleton design pattern

Oleh Muhammad Devano Zaidan (Mahasiswa S-1 Informatika UII)

Saat kita belajar pemrograman, pasti kita sudah pernah mendengar mengenai paradigma pemrograman berorientasi objek atau yang bisa disebut dengan object oriented programming (OOP). Di dalam OOP, terdapat beberapa istilah, salah satunya adalah Design Pattern atau yang dalam bahasa Indonesia adalah pola desain. Istilah tersebut merujuk pada sebuah pola desain yang digunakan untuk menyelesaikan berbagai masalah pada pengembangan perangkat lunak. Pola desain ini dapat digunakan juga untuk pengembangan perangkat lunak selanjutnya, sesuai dengan fungsinya sebagai sebuah pola untuk menyelesaikan masalah pada kondisi tertentu.

Apa Itu Singleton Design Pattern?

Singleton design pattern termasuk ke dalam jenis creational design pattern yang berarti pola desain ini digunakan dalam konteks pembuatan sebuah instansiasi dari kelas objek. Singleton design pattern bertujuan agar sebuah class hanya mempunyai satu instansiasi yang menyediakan akses global pada instansiasi tersebut. Pola desain ini membatasi sebuah kelas dan memastikan sebuah kelas hanya mengembalikan satu instansiasi saja/instansiasi tunggal. 

Penggunaan singleton ini didasari pada sebuah masalah pada pembuatan sebuah objek di mana sebuah class dapat membuat banyak instansiasi. Padahal, instansiasi tersebut cuma dibutuhkan satu saja, atau sebenarnya kita cuma perlu satu instansiasi saja untuk melakukan sebuah aksi pada program. 

Sebagai contoh adalah saat kita ingin melakukan sebuah aksi pada database, yaitu melakukan koneksi ke database. Kasus koneksi database pada sebuah kode program sejatinya dilakukan tidak hanya sekali. Kita ambil contoh ketika kita membuat sebuah web yang setiap halamannya memiliki file-file tersendiri. Setiap file yang ada pada setiap halaman dapat melakukan koneksi database dengan memanggil objek database seperti misalnya ingin mendapatkan list data yang akan ditampilkan ke halaman. Ketika tidak menggunakan singleton, setiap file yang melakukan koneksi database akan membuat objek database berkali-kali yang mana hal tersebut sangat tidak diperlukan. Maka dari itulah singleton digunakan. 

Katakanlah kelas DB mempunyai fungsi yang memanggil instansiasi objek yang digunakan untuk koneksi database, maka kelas DB pada pola desain singleton harus mengembalikan satu instansiasi saja. Dalam kasus web yang memiliki banyak file, ketika sebuah file ingin melakukan koneksi ke database, dapat digunakan kelas DB yang merujuk pada satu instansiasi objek database yang sama daripada membuat objek baru lagi.

Penerapan singleton

Pada contoh di bawah, saya menggunakan bahasa pemrograman Java untuk menggambarkan penggunaan pola desain Singleton.

contoh singleton design pattern

Contoh penerapan singleton design pattern menggunakan bahasa Java

Pada kode di atas, terdapat kelas DB yang berfungsi untuk membuat instansiasi objek Database yang nantinya akan digunakan untuk melakukan aksi tertentu seperti misalnya koneksi ke database.

membuat atribut database static

membuat atribut database static

Pertama, kita membuat atribut database dengan keyword static dan public modifier yang nantinya akan dibuatkan instansiasi ketika fungsi getInstance() dipanggil. Penggunaan keyword static bertujuan agar sebuah instansiasi atribut pada kelas merujuk pada kelas tersebut dan hanya dibuat sekali saja.

method getInstance() yang menerapkan singleton design pattern

method getInstance() yang menerapkan singleton design pattern

Pada fungsi getInstance() terdapat pernyataan kondisional yaitu pengecekan apakah atribut database pada kelas DB berisi null atau bukan. Ketika berisi null, kelas DB akan membuat instansiasi kelas Database baru. Hal ini biasanya dieksekusi ketika pertama kali memanggil fungsi tersebut. Saat kita ingin memanggil lagi fungsi tersebut, kelas DB tidak perlu membuat instansiasi baru; cukup mengembalikan objek yang sama yang sudah dibuat sebelumnya. 

Contoh kasus ketika kita membuat koneksi database pada file x. Kemudian, kita melakukan koneksi database lagi di file y. Maka, objek yang kita gunakan untuk melakukan koneksi merujuk pada instansiasi yang sama pada file x.

Instansiasi Database menggunakan singleton design pattern

Instansiasi Database menggunakan singleton design pattern

Berdasarkan gambar di atas, file x memanggil instansiasi dari kelas DB untuk kemudian melakukan koneksi database dan begitu juga pada file y. Kedua file tersebut sejatinya hanya akan memanggil instansiasi objek yang sama sesuai perilaku dari singleton itu sendiri.

Kesimpulan

Dengan adanya konsep pola desain singleton, dipastikan sebuah kelas hanya akan mengembalikan satu instansiasi saja yang tentunya hal ini bermanfaat pada beberapa kasus dalam pengembangan perangkat lunak, seperti koneksi database. Dengan singleton, kita dapat mengakses instansiasi objek dari mana saja karena terdapat public modifier pada fungsi yang mengembalikan instansiasi objek; pada kasus di atas adalah fungsi getInstance(). Terakhir, objek singleton hanya akan dibuat ketika dibutuhkan pertama kali saat kita memanggil fungsi terkait.

Demikian artikel mengenai pengenalan pola desain singleton. Harapannya, setelah membaca artikel ini, pembaca menjadi paham akan apa itu pola desain singleton dan penerapannya dalam pengembangan perangkat lunak. Mohon maaf apabila masih terdapat kekurangan dalam penulisan. Kritik dan saran sangat diapresiasi. Sekian dan terima kasih.

[/FA]