Motivasi
Kadang ada keadaan di mana kita hanya boleh memiliki satu instan dari suatu kelas. Sebagai contoh, kita hanya boleh memiliki satu window manager (atau satu sistem file atau satu spooler printer) pada satu aplikasi. Biasanya singleton digunakan untuk managemen sumber daya internal maupun eksternal secara terpusat dan bisa diakses dimanapun.
Singleton merupkan salah satu design pattern yang paling sederhana. Singleton hanya melibatkan satu kelas yang bertanggung jawab untuk menginstansiasi dirinya sendiri dan pada saat yang bersamaan menyediakan akses secara global terhadap instan tersebut. Pada pattern singleton, instan bisa diakses dari manapun tanpa harus memanggil contructor dari kelas instan tersebut
Tujuan
• Memastikan bahwa satu kelas hanya bisa dibuat instannya sekali.
• Menyediakan akses secara global terhadap instan singleton tersebut.
Implementasi
Pada bahasa pemrograman Java, implementasi dari singleton adalah dengan membuat sebuah atribut static pada kelas "Singleton" , constructor dengan akses private, dan sebuah method static dengan akses public yang mengembalikan nilai yang mengacu pada atribut static.
Pattern Singleton mendefinisikan sebuah operasi yang bernama getInstance. Getinstance ini bertugas mengembalikan instan yang unik yang diakses oleh klien. GetInstance() adalah sebuah method yang bertanggung jawab untuk menciptakan sebuah instant dari kelas itu sendiri jika instan tersebut belum diciptakan. Jika sudah, method getinstant tinggal mengembalikan instan tersebut.
Sedangkan implementasi pada Delphi sedikit berbeda. Hal ini karena beberapa hal :
1. Pada Delphi versi lama, static field tidak didukung
2. AFAIK, Delphi tidak mengijinkan private constructor.
Untuk mengakali kekurangan tersebut, implementasi Singleton pada Delphi bisa dilakukan seperti di bawah ini :
Penerapan Contoh
Sesuai dengan definisi, pattern singleton digunakan ketika dibutuhkan hanya ada satu instan dari suatu kelas, dan ketika instan tersebut harus bisa diakses dari manapun. Berikut ini contoh real dimana pattern singleton diterapkan :
Contoh 1 – Kelas Log
Pattern singleton digunakan untuk kelas log. Kelas ini biasanya diimplementasikan sebagai sebuah singleton, dan menyediakan akses secara global dari manapun tanpa harus mengistansiasi kelas tersebut tiap kali melakukan operasi log.
Contoh 2 –Kelas Konfigurasi
Pattern singleton digunakan untuk kelas yang mengatur kofigurasi sebuah aplikasi. Dengan mengimplementasi kelas konfigurasi sebagai singleton, bukan hanya menyediakan akses global , tapi juga menjadikan instan dari kelas konfigurasi tersebut sebagai cache objek. Ketika kelas konfigurasi dinstansiasi, singleton akan menyimpan data konfigurasi tersebut sesuai struktur kelas tersebut. Jika data konfigurasi diambil dari database atau file, singleton memungkinkan kita bisa mengakses data tersebut tanpa melakukan pengambilan ulang dari database atau file tiap kali kita membutuhkan.
Contoh3 - Dipakai Untuk Mengakses sumberdaya yang dipakai bersama
Singleton bisa digunakan pada aplikasi yang membutuhkan akses ke port serial. Misal, ada banyak kelas dalam aplikasi, berada pada lingkungan multithreading , yang harus mengerjakan sesuatu pada port serial.Pada kasus ini singleton dengan method harus digunakan untuk mengatur semua operasi pada port serial tersebut.
Demikianlah sekilas tentang pattern singleton. Semoga bermanfaat dan tetap semangat !
Kadang ada keadaan di mana kita hanya boleh memiliki satu instan dari suatu kelas. Sebagai contoh, kita hanya boleh memiliki satu window manager (atau satu sistem file atau satu spooler printer) pada satu aplikasi. Biasanya singleton digunakan untuk managemen sumber daya internal maupun eksternal secara terpusat dan bisa diakses dimanapun.
Singleton merupkan salah satu design pattern yang paling sederhana. Singleton hanya melibatkan satu kelas yang bertanggung jawab untuk menginstansiasi dirinya sendiri dan pada saat yang bersamaan menyediakan akses secara global terhadap instan tersebut. Pada pattern singleton, instan bisa diakses dari manapun tanpa harus memanggil contructor dari kelas instan tersebut
Tujuan
• Memastikan bahwa satu kelas hanya bisa dibuat instannya sekali.
• Menyediakan akses secara global terhadap instan singleton tersebut.
Implementasi
Pada bahasa pemrograman Java, implementasi dari singleton adalah dengan membuat sebuah atribut static pada kelas "Singleton" , constructor dengan akses private, dan sebuah method static dengan akses public yang mengembalikan nilai yang mengacu pada atribut static.
Pattern Singleton mendefinisikan sebuah operasi yang bernama getInstance. Getinstance ini bertugas mengembalikan instan yang unik yang diakses oleh klien. GetInstance() adalah sebuah method yang bertanggung jawab untuk menciptakan sebuah instant dari kelas itu sendiri jika instan tersebut belum diciptakan. Jika sudah, method getinstant tinggal mengembalikan instan tersebut.
Sedangkan implementasi pada Delphi sedikit berbeda. Hal ini karena beberapa hal :
1. Pada Delphi versi lama, static field tidak didukung
2. AFAIK, Delphi tidak mengijinkan private constructor.
Untuk mengakali kekurangan tersebut, implementasi Singleton pada Delphi bisa dilakukan seperti di bawah ini :
unit Singletn; interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs; type TOSingleton = class(TObject) public constructor Create; destructor Destroy; override; end; var Global_OSingleton: TOSingleton; constructor TOSingleton.Create; begin if Global_OSingleton <> nil then {NB could show a message or raise a different exception here} Abort else Global_OSingleton := Self; end; destructor TOSingleton.Destroy; begin if Global_OSingleton = Self then Global_OSingleton := nil; inherited Destroy; end; procedure FreeGlobalObjects; far; begin if Global_OSingleton <> nil then Global_OSingleton.Free; end;Coba anda perhatikan baris kode pada contructor. Disitu tertulis, jika variable
Global_OSingleton <> nilmaka method Abort akan dieksekusi, atau bisa juga diganti dengan melemparkan eksepsi. Jika
Global_OSingleton = nilmaka akan dicreate sebuah instan dari kelas TOSingleton.
Penerapan Contoh
Sesuai dengan definisi, pattern singleton digunakan ketika dibutuhkan hanya ada satu instan dari suatu kelas, dan ketika instan tersebut harus bisa diakses dari manapun. Berikut ini contoh real dimana pattern singleton diterapkan :
Contoh 1 – Kelas Log
Pattern singleton digunakan untuk kelas log. Kelas ini biasanya diimplementasikan sebagai sebuah singleton, dan menyediakan akses secara global dari manapun tanpa harus mengistansiasi kelas tersebut tiap kali melakukan operasi log.
Contoh 2 –Kelas Konfigurasi
Pattern singleton digunakan untuk kelas yang mengatur kofigurasi sebuah aplikasi. Dengan mengimplementasi kelas konfigurasi sebagai singleton, bukan hanya menyediakan akses global , tapi juga menjadikan instan dari kelas konfigurasi tersebut sebagai cache objek. Ketika kelas konfigurasi dinstansiasi, singleton akan menyimpan data konfigurasi tersebut sesuai struktur kelas tersebut. Jika data konfigurasi diambil dari database atau file, singleton memungkinkan kita bisa mengakses data tersebut tanpa melakukan pengambilan ulang dari database atau file tiap kali kita membutuhkan.
Contoh3 - Dipakai Untuk Mengakses sumberdaya yang dipakai bersama
Singleton bisa digunakan pada aplikasi yang membutuhkan akses ke port serial. Misal, ada banyak kelas dalam aplikasi, berada pada lingkungan multithreading , yang harus mengerjakan sesuatu pada port serial.Pada kasus ini singleton dengan method harus digunakan untuk mengatur semua operasi pada port serial tersebut.
Demikianlah sekilas tentang pattern singleton. Semoga bermanfaat dan tetap semangat !
0 comments:
Post a Comment