Abstract Factory(Pabrikasi) Pattern
Abstract Factory pattern adalah pattern yang digunakan untuk memproduksi/membuat/menghasilkan(tapi kalau saya lebih prefer “memilih”) suatu class dari opsi beberapa class berdasarkan kriteria(argument) yang ada.
contoh kasus:
Banyak orang luar negeri yang menggunakan format standar dalam penulisan nama seperti ini namaBelakang, namaDepan sedangkan kita menggunakan format standar seperti ini namaDepan namaBelakang.
Lalu disini kita memiliki form pengisian nama(hanya memiliki satu baris) yang kemungkinan akan diisi oleh orang luar negeri atau seperti kita.
goal:
mendapatkan namaDepan dan namaBelakang dari contoh kasus di atas.
class Nama {
protected String namaDepan;
protected String namaBelakang;
String getNamaDepan() {
return namaDepan;
}
String getNamaBelakang() {
return namaBelakang;
}
}
class IndonesiaNaming extends Nama {
IndonesiaNaming(String entry) {
int i = entry.lastIndexOf(' ');
if(i>0) {
namaDepan = entry.substring(0, i).trim();
namaBelakang = entry.substring(i+1).trim();
}
else {
namaDepan = "";
namaBelakang = entry;
}
}
}
class WesternNaming extends Nama {
WesternNaming(String entry) {
int i = entry.lastIndexOf(',');
if(i>0){
namaDepan = entry.substring(i+1).trim();
namaBelakang = entry.substring(0, i).trim();
}
else {
namaDepan = "";
namaBelakang = entry;
}
}
}
class NamingFactory {
Nama getNama(String s){
int i = s.indexOf(',');
if(i>0){
return new WesternNaming(s);
}
else {
return new IndonesiaNaming(s);
}
}
}
//setelah itu kita dapat mencobanya dengan menggunakan contoh penerapan di bawah ini:
public class TestFactoryPattern {
public static void main(String[] args) {
NamingFactory pabrikNama = new NamingFactory();
Nama yourFriend = pabrikNama.getNama("yourfriendslastname, yourfriendsfirstname");
System.out.println(yourFriend.namaDepan);
System.out.println(yourFriend.namaBelakang);
Nama temanSaya = pabrikNama.getNama("Gangsar SwaPurba");
System.out.println(temanSaya.namaDepan);
System.out.println(temanSaya.namaBelakang);
}
}
So, menurut hemat saya, abstract factory pattern digunakan apablila kita “bingung” ingin “me-return” class yang mana dari beberapa pilihan class yang ada, atau dengan kata lain class yang mana yang harus kita “return” berdasarkan dari argument yang ada dan hasil yang dikeluarkan adalah sudah di kategorikan.