Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Singleton Pattern 1 one uno. What is Singleton ? One object of a kind Ada class yang hanya perlu diinstansiasi 1 kali saja Alasan: Dalam beberapa kasus.

Presentasi serupa


Presentasi berjudul: "Singleton Pattern 1 one uno. What is Singleton ? One object of a kind Ada class yang hanya perlu diinstansiasi 1 kali saja Alasan: Dalam beberapa kasus."— Transcript presentasi:

1 Singleton Pattern 1 one uno

2 What is Singleton ? One object of a kind Ada class yang hanya perlu diinstansiasi 1 kali saja Alasan: Dalam beberapa kasus hanya dibutuhkan 1 object saja

3 Like What ? Database Connection Dalam banyak kasus, koneksi database cukup satu saja Misal : hanya 1 lisensi koneksi

4 Else ? Application Setting (Preferences) Beberapa bagian program yang berbeda akan membaca dan menulis setting

5 More ? Logging activities Beberapa bagian program perlu menulis ke file log yang sama

6 Singleton Memastikan suatu class hanya dapat “menghasilkan” satu object saja Konsepnya mirip global variable (dengan perbedaan) Pada Singleton, object hanya dibuat saat dibutuhkan, sedangkan Global Variable dibuat saat awal program dijalankan

7 public class Whatever { … } Bagaimana cara membuat object dari class Whatever ? Whatever object1 = new Whatever(); Bisa membuat lebih dari 1 object ? Whatever object1 = new Whatever(); Whatever object2 = new Whatever(); … Whatever object100 = new Whatever(); Public ! Bagaimana jika default ?

8 class Whatever { … } Hanya dapat diakses dari package yang sama ! Tetap bisa dibuat lebih dari 1 object dari class Whatever Whatever object1 = new Whatever(); Whatever object2 = new Whatever(); … Whatever object100 = new Whatever(); Object membutuhkan memory, semakin banyak object ?

9 Tahukah anda, kita dapat melakukan ini public class Whatever { private Whatever() { } } Private Constructor ! Apa konsekuensinya ? Hubungannya dengan Singleton ?

10 Masih ingat konsep static method ? public class Whatever { public static void hitung() { … } } Whatever.hitung(); Method hitung() dapat dipanggil tanpa perlu melakukan instansiasi class Whatever

11 Bagaimana jika seperti ini ? public class Whatever { public static Whatever getInstance() { … } } Method tersebut mengembalikan object bertipe Whatever Whatever object1 = Whatever.getInstance();

12 Kalau ini ? public class Whatever { private Whatever() { } public static Whatever getInstance() { return new Whatever(); } } Memanggil static method getInstance() merupakan cara alternatif untuk instansiasi Tapi masih bisa membuat lebih dari 1 object !!

13 public class Singleton { private static Singleton oneObject; private Singleton() { } //… public static Whatever getInstance() { if(oneObject == null) oneObject = new Singleton(); return oneObject; } //…. }

14 Sudah cukup? TIDAK !! public static Whatever getInstance() { if(oneObject == null) oneObject = new Singleton(); return oneObject; } Berpotensi “gagal” jika program kita Multithreading !

15 Easy Fix ! public static synchronized Whatever getInstance() { if(oneObject == null) oneObject = new Singleton(); return oneObject; } Cara ini memiliki kelemahan karena synchronized membuat aplikasi anda menjadi lebih lambat !!

16 Beberapa Pilihan (Multithread) Tetap gunakan synchronized – Jika proses pembuatan object tidak membutuhkan sumber daya yang besar (waktu dan memory) Buat instance sedini mungkin – Dijamin “aman” untuk multithread ! Lakukan pengecekan “ganda” !

17 Buat instance sedini mungkin (Thread safe) public class Singleton { private static Singleton oneObject = new Singleton(); private Singleton() { } //… public static Whatever getInstance() { return oneObject; } //…. }

18 public class Singleton { private volatile static Singleton oneObject; private Singleton() { } //… public static Whatever getInstance() { if(oneObject == null) synchronized(Singleton.class) { if(oneObject == null) { oneObject = new Singleton(); } //…. } Pengecekan ganda !

19 Class Diagram Singleton

20 ADA PERTANYAAN ? KONSULTASIKAN KOMPONEN ANDA SEGERA

21 NEXT : COMMAND PATTERN


Download ppt "Singleton Pattern 1 one uno. What is Singleton ? One object of a kind Ada class yang hanya perlu diinstansiasi 1 kali saja Alasan: Dalam beberapa kasus."

Presentasi serupa


Iklan oleh Google