Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1. what is Abstract Factory patten
- Abstract Factory adalah contoh konsep dari desing pattern yang dapat digunakan untuk menghasilkan Factory di dalam Factory.
- 2. what are their benefit
- Abstract Factory Bermanfaat untuk mewaris kan method-method bertipe abstract pada factory - factory yang digunakan untuk pembuatan object.
- 3. what are their drawback
- Kekurangan Abstract factory itu sendiri adalah harus mendefinisikan sebuah family atau abstract produk jika ingin menambahkan sebuah produk yang tidak termasuk dalam family yang sudah ada dan semakin menambah produk maka jumlah kelas semakin banyak.
- 4. when to use it at best
- Abstract Factory digunakan kalau kita ingin membuat produksi yang dimana akan banyak terdapat produk - produk baru.
- 5. when to NOT use it
- Abstract Factory tidak perlu digunakan apabila kita sudah menentukan produk - produk apa saja yang akan di produksi sehingga tidak perlu membuat class tambahan pada code.
- * Class Main
- public class FactoryMain
- {
- public static void main(String[] args)
- {
- System.out.println(" *MENU MAKANAN* \n");
- AbstractFactory makananFactory = FactoryProduksi.getFactory(FactoryProduksi.PILIH_MAKANAN);
- Makanan order1 = makananFactory.getMakanan(JenisMakanan.NASI_GORENG);
- order1.harga();
- Makanan order2 = makananFactory.getMakanan(JenisMakanan.NASI_PADANG);
- order2.harga();
- Makanan order3 = makananFactory.getMakanan(JenisMakanan.NASI_UDUK);
- order3.harga();
- System.out.println(" *MENU MINUMAN* \n");
- AbstractFactory minumanFactory = FactoryProduksi.getFactory(FactoryProduksi.PILIH_MINUMAN);
- Minuman order4 = minumanFactory.getMinuman(JenisMinuman.TEH_HIJAU);
- order4.rasa();
- Minuman order5 = minumanFactory.getMinuman(JenisMinuman.TEH_MANIS);
- order5.rasa();
- Minuman order6 = minumanFactory.getMinuman(JenisMinuman.TEH_TAWAR);
- order6.rasa();
- }
- }
- * Class Factory Produksi
- public class FactoryProduksi
- {
- public static final String PILIH_MAKANAN = "Memilih Makanan";
- public static final String PILIH_MINUMAN = "Memilij Minuman";
- public static AbstractFactory getFactory(String pilih)
- {
- if(pilih.equals(PILIH_MAKANAN))
- {
- return new MakananFactory();
- }
- else if(pilih.equals(PILIH_MINUMAN))
- {
- return new MinumanFactory();
- }
- return null;
- }
- }
- * Class Abstract Factory
- public abstract class AbstractFactory
- {
- abstract Makanan getMakanan(String makanan);
- abstract Minuman getMinuman(String minuman);
- }
- * Class Minuman Factory
- public abstract class MinumanFactory
- {
- public static Minuman getMinuman(String jenisMinuman)
- {
- if(jenisMinuman.equals(JenisMinuman.TEH_HIJAU))
- {
- return new TehHijau();
- }
- else if(jenisMinuman.equals(JenisMinuman.TEH_MANIS))
- {
- return new TehManis();
- }
- else if(jenisMinuman.equals(JenisMinuman.TEH_TAWAR))
- {
- return new TehTawar();
- }
- return null;
- }
- }
- * Class Minuman
- public interface Minuman
- {
- void rasa();
- }
- * Class Teh Tawar
- public class TehTawar implements Minuman
- {
- private String namaMinuman = TehTawar.class.getSimpleName();
- String TehTawar = "Teh Tawar";
- @Override
- public void rasa() {
- // TODO Auto-generated method stub
- System.out.println(TehTawar + " : Rasanya hambar, Tapi sangat cocok di sajikan saat makan....\n");
- }
- }
- * Class Teh Manis
- public class TehManis implements Minuman
- {
- private String namaMinuman = TehManis.class.getSimpleName();
- String TehManis = "Teh Manis";
- @Override
- public void rasa()
- {
- // TODO Auto-generated method stub
- System.out.println(TehManis + " : Rasanya manis, tapi menyegerkan....\n");
- }
- }
- * Class Teh Hijau
- public class TehHijau implements Minuman
- {
- private String namaMinuman = TehHijau.class.getSimpleName();
- String TehHijau = "Teh Hijau";
- @Override
- public void rasa() {
- // TODO Auto-generated method stub
- System.out.println(TehHijau+" : Rasanya sangat pahit, tapi menyehatkan....\n");
- }
- }
- * Class Makanan Factory
- public class MakananFactory extends AbstractFactory
- {
- @Override
- Makanan getMakanan(String makanan) {
- if(makanan.equals(JenisMakanan.NASI_GORENG))
- {
- return new NasiGoreng();
- }
- else if(makanan.equals(JenisMakanan.NASI_PADANG))
- {
- return new NasiPadang();
- }
- else if(makanan.equals(JenisMakanan.NASI_UDUK))
- {
- return new NasiUduk();
- }
- return null;
- }
- @Override
- Minuman getMinuman(String minuman) {
- // TODO Auto-generated method stub
- return null;
- }
- }
- * Class Makanan
- public interface Makanan
- {
- void harga();
- }
- * Class Nasi Padang
- public class NasiPadang implements Makanan
- {
- private String namaMakanan = NasiPadang.class.getSimpleName();
- String NasiPadang = "Nasi Padang";
- @Override
- public void harga() {
- // TODO Auto-generated method stub
- System.out.println(NasiPadang + " : Harganya 15.000 , Mantap bro....\n");
- }
- }
- * Class Nasi Goreng
- public class NasiGoreng implements Makanan
- {
- private String namaMakanan = NasiGoreng.class.getSimpleName();
- String NasiGoreng = "Nasi Goreng";
- @Override
- public void harga() {
- // TODO Auto-generated method stub
- System.out.println(NasiGoreng + " : Harganya 10.000 ,Maknuys Boss....\n");
- }
- }
- * Class Nasi Uduk
- public class NasiUduk implements Makanan
- {
- private String namaMakanan = NasiUduk.class.getSimpleName();
- String NasiUduk = "Nasi Uduk";
- @Override
- public void harga() {
- // TODO Auto-generated method stub
- System.out.println(NasiUduk + " : Harganya cuman 6000 , Mantap !\n");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement