Singleton adalah salah satu bagian deign pattern yang berurusan dengan cara mengatur instantiasi objek dalam aplikasi. Objek hanya di buat sekali selama aplikasi hidup.
Berikut adalah syarat untuk membuat suatu class mengikuti design pattern singleton.
1. Membuat private constructor
Private constructor menyebabkan instantiasi objek tidak bisa dilakukan dari luar class.
Class ObjectSingleton {
// memaksa instantiasi objek di level class ini sendiri
private ObjectSingleton(){
// optional code
}
}
2. Membuat static method getter object singleton
Menyediakan wadah agar class lain bisa mendapatkan objek singleton tanpa harus instantiasi objek itu sendiri dikarenakan method getter nya menggunakan static.
Class ObjectSingleton {3. Meng-override clone method
private static ObjectSingleton objectSingleton;
private ObjectSingleton(){
// optional code
}
// memaksa agar hanya lewat method ini saja instantiasi 1x dan pemanggilan objek singleton.
public static getOjectSingleton (){
if (objectSingleton == null) {
objectSingleton = new ObjectSingleton();
}
}
Mengantisipasi dan menghalangi cloning pada objek singleton.
// memaksa throw exception ketika ada yang mencoba meng clone ObjectSingleton.
public Object clone() throws CloneNotSupportedException {
throw new CloneNotSupportedException();
}
4, (Optional) Membuat method getter object singleton menjadi synchronized.
Jika berhadapan dengan multi thread aplikasi, makan synchronized diperlukan untuk mengantisipasi ada 2 thread yang secara bersamaan mengakses method untuk mendapatkan objek singleton.
public static synchronized getOjectSingleton (){
if (objectSingleton == null) {
objectSingleton = new ObjectSingleton();
}
Design Pattern Singleton adalah salah satu pemecahan masalah masalah umum yang dihadapi dalam rekayasa perangkat lunak (Software Engineering). Implementasi Singleton dapat ditemui dalam class Connection milik Java.
Semoga sharing ini membantu kita semua.
Just collecting notes and sharing.. Please let me know if there are wrong statements in this article or a copy-paste one
No comments:
Post a Comment