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.

Slides:



Advertisements
Presentasi serupa
EXCEPTION HANDLING.
Advertisements

Pemrograman JAVA (TIB09)
Membuat class sendiri.
Nur Hayatin, S.ST Referensi : Gunadarma University.
ABSTRACT CLASS Imam Fahrur Rozi.
Abstract Class & Interface
Workshop SCS: Java Game Programming
Flow Control & Exception Handling
Inheritance Ery Setiyawan Jullev A.
Inheritance (Pewarisan)
Membuat Class Sendiri Atribut Pertemuan : Object Oriented Programming.
Advanced Class Oleh : Nur Hayatin, S.ST Teknik Informatika – UMM 2011.
Pemrograman Berbasis Obyek
Praktikum 8 Pemrograman Berbasis Obyek
MINGGU 5 Java Programming (MKB614C)
Variabel, Method & Constructor Oleh : Nur Hayatin, S.ST Teknik Informatika – UMM 2011.
Pemrograman Berorientasi Obyek Oleh Tita Karlita
OBJECT ORIENTED PROGRAMMING YANES HARDIANTO SUI Politeknik Manufaktur Astra 2011.
Advanced Class Oleh : Nur Hayatin, S.ST Teknik Informatika – UMM 2011.
Diberikan pada Kuliah Sela Teknik Informatika - Universitas Muhammadiyah Malang Tahun 2011.
07 Advanced Class Features
MEMBUAT CLASS SENDIRI. Pada akhir pembahasan, peserta diharapkan mampu untuk :  Membuat class  Mendeklarasikan atribut dan method untuk class  Menggunakan.
Kelas Lanjut 2 Oleh Tita Karlita.
Class and Object Matakuliah : XXXX / Algoritma dan Metode Object Oriented Programming II Pertemuan : 2 Tahun : 2008 Versi : 1/0.
INHERITANCE (Oleh : Nur Hayatin, S.ST)
OOP Java Minggu 2b Dasar OOP. Class (1) Deklarasi class : [ *] class { [ *] } Cat : [] = optional, * = repeat 0-N.
Algoritma &Pemrograman 1
Try, Catch, Finally Throws
Pertemuan 10 Constructor dan Destructor
Kelas A dapat memiliki referensi ke obyek dari kelas- kelas lain sebagai anggota. Kadang-kadang disebut sebagai hubungan “has-a”. Sebagai contoh, sebuah.
Pemrograman berorientasi objek
MEMBUAT KELAS SENDIRI Dewi Sartika, M.Kom.
FONDASI PEMROGRAMAN & STRUKTUR DATA #5
Class & Object Disusun Oleh: Reza Budiawan Untuk:
Pemrograman Visual I Outline: Method Method Void & fungsi
Outline: Class Objek Konstruktor Destruktor Overloading dan Tipe value
Access Modifier.
Inheritance dan Kata Kunci static
ADBO (Analisa Desain Berorientasi Obyek)
Aplikasi berbasis teks
Pemograman Berorientasi Objek
Objek-Oriented Programming (OOP)
Pemrograman Berorientasi Object
Algoritma & Pemrograman 1
Constructor dan Overloading
Pemrograman Berorientasi Object
MODIFIER JAVA.
Pengorganisasian Class
Enkapsulasi, Accessor Method, Mutator Method
Constructor overloading
Association, Composition dan Inheritance
Constructor dan Destructor Pertemuan 17
THREAD Pertemuan 9.
MEMBUAT CLASS SENDIRI 2.
Membuat Kelas.
BPJ – Pertemuan 13 OOP.
Objects in Java U Abd. Rohim, MT mailto:
Class.
PBO Lanjutan Membuat Kelas.
Overloading Menuliskan kembali method dengan nama yang sama pada suatu class. Tujuan : memudahkan penggunaan/pemanggilan method dengan fungsionalitas yang.
Membuat Class Sendiri.
Method Java Fundamental Syahrul Mauluddin S.Kom, M.Kom.
Pemrograman Berorientasi Objek <PBO>
Inisiasi Class dan Object
Konsep Bahasa Pemrograman I Konsep OOP
Oleh : Rahmat Robi Waliyansyah, M.Kom.
Dasar-dasar Pemrograman Berbasis Obyek. kelas Kelas pada java didefinisikan dengan menggunakan kata kunci class.
Pemrograman Berorientasi Objek
DPH1C4 Pemrograman berorientasi Obyek
FONDASI PEMROGRAMAN & STRUKTUR DATA #5 - 1
Transcript presentasi:

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 hanya dibutuhkan 1 object saja

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

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

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

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

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 ?

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 ?

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

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

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

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 !!

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

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

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 !!

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” !

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

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 !

Class Diagram Singleton

ADA PERTANYAAN ? KONSULTASIKAN KOMPONEN ANDA SEGERA

NEXT : COMMAND PATTERN