Old-Singleton VS New-Singleton

Berhubung gw udah gak jelas di postingan sebelumnya, jadi sekarang gw tulisin dah yang benerannya… Walo sebenernya ini cuma buat ngilangin rasa penasaran kamu yang ngerasa gak nyambung ama tulisan gw sebelumnya.

Intinya, ada 2 cara buat ngeaplikasiin singleton di sebuah kelas. Kalo cara lama gini:

Tunggal.java:

public class Tunggal {
    private static Tunggal objek;
    private int a;

    public int getA() {
        return a;
    }

    public void setA(int a) {
        this.a = a;
    }
    private Tunggal(){

    }
    public static Tunggal getObjek(){
        if(objek == null){
            objek = new Tunggal();
        }
        return objek;
    }
}

Main.java:

public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Tunggal t = Tunggal.getObjek();
        t.setA(8);
        System.out.println("Nilai atribut: "+t.getA());
    }

}

Sedangkan kalo pake cara baru:

Tunggal.java

public enum Tunggal {
    INSTANCE;
    private int x;

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }
    public void methodA(){
        System.out.println("Haiiii");
    }
}

Main.java

public class Main {
    public static void main(String[] args) {
        //bentuk objek
        Tunggal.INSTANCE.methodA();
        Tunggal.INSTANCE.setX(5);
        System.out.println("Harga x: "+Tunggal.INSTANCE.getX());
    }
}

Buat ngeyakinin kalo udah singleton, bisa di-trace ajah dari lokasi alamat memori-nya. Terus, kalo kamu penasaran… yaaa, enum memang mengharuskan konstruktor bersifat private. Jadi kamu gak mungkin bikin konstruktor bertipe public di enum. Jadi kemungkinan buat diakses dari luar gak ada kecuali dari pemanggilan variabel-nya (yang sebenernya konstanta). Dan yaaa… khusus singleton, kamu harus bikin single-enum type. Artinya enum di atas, jangan kamu tambahin elemen konstanta lain. Cukup “INSTANCE” ajah. Kalo mau yang lain, pakein penulisan atribut bertipe private. Ini namanya “one-element enum”.

Begitulaaahhh… sekedar menjawab rasa penasaran kamu kenapa posting sebelumnya berjudul Singleton VS Singleton, walo awalnya itu cuma curhatan gw yang lagi patah hati ajah… Owhh Alyssa…….kenapa kamu lebih milih Dude Herlino dibanding aa’-mu yang keren ini…. 😥

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s