Factory Pattern adalah pattern yang digunakan untuk memisahkan (decouple) proses pembuatan/instansiasi sebuah objek (produk) dari objek lain (klien) yang menggunakannya. Tujuannya supaya perubahan pada product class nggak menyebabkan kita harus mengubah kode pada client. Paling nggak akibat dari perubahan itu bisa diminimalisir. Dan juga supaya si factory bisa digunakan oleh banyak class.
Factory adalah objek yang berfungsi membuat objek lain (produk). Class ini menyembunyikan proses pembuatan produk dari klien sehingga klien nggak perlu tahu proses pembuatannya, bahkan klien juga nggak perlu tahu nama class dari produk yang dia minta.
Mungkin kita sering menulis function seperti ini:
var coffee:AbstractCoffee = createCoffee("xxx");
function createCoffee(type:String):Coffee{
if(type == "xxx" ) return new XXXCoffee();
if(type == "yyy" ) return new YYYCoffee();
if(type == "zzz" ) return new ZZZCoffee();
return null;
}
Cukup bagus untuk proyek kecil. Tapi coba bayangin kalo kita punya 20 class yang harus bisa bikin kopi dan semuanya harus bisa ditukar-tukar saat run-time plus si produk kemungkinan besar bakal berubah. Repot. Di sini gunanya Factory Pattern.