Pages

Showing posts with label Design Pattern. Show all posts
Showing posts with label Design Pattern. Show all posts

Sunday, September 11, 2016

Membuat Objek Singleton ( Design Pattern : Singleton )

Object Oriented Programming memiliki beberapa macam design pattern. Salah satu yang paling umum dan dikenal adalah Singleton.
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 {
    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();
     }
}
3. Meng-override clone method
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

Saturday, December 31, 2011

Cohesion (Kohesi) & Coupling (Kopling)

Cohesion dan Coupling merupakan konsep dasar dalam perancangan dan rekayasa perangkat lunak.
Membagi software/perangkat lunak menjadi modul-modul yang kecil bukan sekedar memisahkan kumpulan kode dari kumpulan kode lainnya. Tetapi memastikan bahwa modul yang dirancang menganut prinsip
"Loose Coupling, High Cohesion"

Coupling  adalah ketergantungan antar modul satu dengan modul lainnya. Bayangkan jika anda mengubah 1 modul A tapi karena modul lain memiliki ketergantungan terhadap modul A, maka efek perubahan ini mungkin saja punya impact terhadap modul lain. Karena itu loose coupling sangat penting dalam perancangan software.

Cohesion adalah keterikatan fungsi-fungsi di dalam suatu modul. Maksudnya adalah modul yang dibuat memiliki fungsi-fungsi yang serupa untuk 1 tanggung jawab. Karena itu high cohesion sangat penting dalam perancangan software.

Contoh coupling -> Terdapat 1 modul Transaksi untuk Penjualan dan Pembelian. Karena Pembelian dan Penjualan bisa dipisahkan (Pembelian adalah transaksi ke supplier, sedangkan Penjualan adalah transaksi ke Customer) adalah suatu hal yang terpisah, maka modul Transaksi dapat dibagi menjadi 2 modul terpisah yaitu modul Pembelian dan modul Penjualan. Sehingga perubahan terhadapa Penjualan tidak mempengaruhi Pembelian.

Contoh cohesion -> 1 class Lampu memiliki 1 tanggung jawab untuk Lampu saja. Fungsi-fungsi seperti turningOn, turningOff, changeColour, dll harus identik dengan tanggung jawab terhadap prilaku lampu secara umum.



Jika ada salah, mohon koreksinya :)
Maksud hati hanya mao sharing yang saya tau kok :D