Rabu, 04 April 2012

Factory Method

Factorymethod

Static Factory Method dan Contoh Penggunaannya

Kita sebagai programmer Java sering sekali langsung menggunakan operator new untuk melakukan konstruksi dan inisialisasi class kita menjadi object. Kita bisa menggunakan cara lain, yaitu dengan factory method.


Apa sebenarnya fungsi operator new ?


Dengan bahasa yang sangat teknis maka fungsi operator new adalah melakukan konstruksi dan inisialisasi class kita dengan melakukan alokasi memori untuk objek baru dan mengembalikan referensi memori dari objek tersebut. Operator ini juga akan menjalankan metode constructor.


Constructor sendiri adalah method yang namanya sama dengan nama class yang kita definisikan. Contoh penggunaan constructor dan operator new adalah seperti pada listing kedua class Java di bawah ini.


RowData.java
  1. import java.text.SimpleDateFormat;  
  2. import java.util.Date;  
  3.   
  4.   
  5. public class RowData {  
  6. private int numberOfFields;  
  7. private Date currentDate;  
  8.   
  9. public RowData() {  
  10. this.numberOfFields = 0;  
  11.   
  12. currentDate = new Date();  
  13. }  
  14.   
  15. public void printCurrentDate()  
  16. {  
  17. SimpleDateFormat df = new SimpleDateFormat("MM/dd/yyyy");  
  18. System.out.println(df.format(currentDate));  
  19. }  
  20.   
  21. }  


InstantiateRowData .java
  1. public class InstantiateRowData {  
  2.   
  3. public static void main(String[] args)  
  4. {  
  5. /* 
  6.  ********************************** 
  7.  *  Konstruksi objek 
  8.  *  dengan memanggil operator new 
  9.  *  secara langsung dari luar class 
  10.  ********************************** 
  11.  */  
  12. RowData c = new RowData();  
  13.   
  14. c.printCurrentDate();  
  15. }  
  16. }  


Factory Method

Factory method adalah method yang memiliki fungsi khusus untuk melakukan konstruksi class menjadi objek dan mengembalikan referensi objek tersebut.

Method ini harus bersifat static dan ditempelkan ke dalam class tersebut. Dan untuk menjamin bahwa kita tidak akan bisa melakukan konstruksi langsung maka secara eksplisit method constructor harus diubah diberi akses private.

Lihatlah kedua class setelah diubah konstruksinya.

RowData.java
  1. import java.text.SimpleDateFormat;  
  2. import java.util.Date;  
  3.   
  4.   
  5. public class RowData {  
  6. private int numberOfFields;  
  7. private Date currentDate;  
  8.   
  9. private RowData() {  
  10. this.numberOfFields = 0;  
  11.   
  12. currentDate = new Date();  
  13. }  
  14.   
  15. public static RowData getRowData()  
  16. {  
  17. return new RowData();  
  18. }  
  19.   
  20. public void printCurrentDate()  
  21. {  
  22. SimpleDateFormat df = new SimpleDateFormat("MM/dd/yyyy");  
  23. System.out.println(df.format(currentDate));  
  24. }  
  25.   
  26. }  

Perhatikan di baris 9 bahwa constructor kita telah diberi akses private dari yang sebelumnya bersifat publicsehingga operator new tidak mungkin dapat mencapainya lagi dari luar class RowData. Kita menggantikannya dengan suatu method static getRowData() yang bersifat public. Di dalam method ini kita kembali melakukan konstruksi objek dengan operator new.


InstantiateRowData.java
  1. public class InstantiateRowData {  
  2.   
  3. public static void main(String[] args)  
  4. {  
  5. /* 
  6.  ********************************** 
  7.  *  Konstruksi objek 
  8.  *  dengan memanggil 
  9.  *      factory method 
  10.  ********************************** 
  11.  */  
  12. RowData c = RowData.getRowData();  
  13.   
  14. c.printCurrentDate();  
  15. }  
  16. }  
Kegunaan Factory Method


Walaupun kelihatan sangat sederhana, tetapi apabila kita sudah makin mahir dalam melakukan coding di Java dan menangani proyek yang makin lama skalanya semakin besar maka akan ada kebutuhan untuk membuat aplikasi yang bersifat concurrent atau yang bersifat parallel multi threading. Kondisi ini membuat kita membutuhkan teknik coding yang makin kompleks dan sophisticated. Salah satunya adalah menghindarkan konstruksi objek setengah jadi (half-constructed object) yang dapat terekspos melalui methodconstructor. Dan ini bisa dipecahkan dengan sangat baik melalui teknik factory method ini.


Selain itu factory method ini juga sudah menjadi bagian dari design pattern yang merupakan kumpulan pola coding yang bisa digunakan kembali sesuai kasus atau reusable.


Download File-file Contoh


Ok, buat Anda yang malas mengetik lagi atau tidak ada editor memadai dan ingin kompilasi langsung dan lihat efeknya silahkan download file-file contohnya di sini.

0 komentar:

Posting Komentar