Advertisement
Rahmadnet

Abstrac Factory

Feb 27th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.57 KB | None | 0 0
  1. 1. what is Abstract Factory patten
  2.     Abstract Factory adalah contoh konsep dari desing pattern yang dapat digunakan untuk menghasilkan Factory di dalam Factory.
  3. 2. what are their benefit
  4.     Abstract Factory Bermanfaat untuk mewaris kan method-method bertipe abstract pada factory - factory yang digunakan untuk pembuatan object.
  5. 3. what are their drawback
  6.     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.
  7.  
  8.  
  9. 4. when to use it at best
  10.     Abstract Factory digunakan kalau kita ingin membuat produksi yang dimana akan banyak terdapat produk - produk baru.
  11.  
  12. 5. when to NOT use it
  13.     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.
  14.    
  15.  
  16.  
  17. * Class Main
  18.  
  19. public class FactoryMain
  20. {
  21.     public static void main(String[] args)
  22.     {
  23.         System.out.println("        *MENU MAKANAN*      \n");
  24.         AbstractFactory makananFactory = FactoryProduksi.getFactory(FactoryProduksi.PILIH_MAKANAN);
  25.        
  26.         Makanan order1 = makananFactory.getMakanan(JenisMakanan.NASI_GORENG);
  27.        
  28.         order1.harga();
  29.        
  30.         Makanan order2 = makananFactory.getMakanan(JenisMakanan.NASI_PADANG);
  31.        
  32.         order2.harga();
  33.        
  34.         Makanan order3 = makananFactory.getMakanan(JenisMakanan.NASI_UDUK);
  35.        
  36.         order3.harga();
  37.        
  38.        
  39.         System.out.println("        *MENU MINUMAN*      \n");
  40.         AbstractFactory minumanFactory = FactoryProduksi.getFactory(FactoryProduksi.PILIH_MINUMAN);
  41.        
  42.        
  43.         Minuman order4 = minumanFactory.getMinuman(JenisMinuman.TEH_HIJAU);
  44.        
  45.         order4.rasa();
  46.        
  47.         Minuman order5 = minumanFactory.getMinuman(JenisMinuman.TEH_MANIS);
  48.        
  49.         order5.rasa();
  50.        
  51.         Minuman order6 = minumanFactory.getMinuman(JenisMinuman.TEH_TAWAR);
  52.        
  53.         order6.rasa();
  54.                
  55.     }
  56. }
  57.  
  58. * Class Factory Produksi
  59.  
  60. public class FactoryProduksi
  61. {
  62.     public static final String PILIH_MAKANAN = "Memilih Makanan";
  63.     public static final String PILIH_MINUMAN = "Memilij Minuman";
  64.    
  65.     public static AbstractFactory getFactory(String pilih)
  66.     {
  67.         if(pilih.equals(PILIH_MAKANAN))
  68.         {
  69.             return new MakananFactory();
  70.         }
  71.         else if(pilih.equals(PILIH_MINUMAN))
  72.         {
  73.             return new MinumanFactory();
  74.         }
  75.         return null;
  76.     }
  77. }
  78.  
  79. * Class Abstract Factory
  80.  
  81. public abstract class AbstractFactory
  82. {
  83.     abstract Makanan getMakanan(String makanan);
  84.     abstract Minuman getMinuman(String minuman);
  85. }
  86.  
  87.  
  88. * Class Minuman Factory
  89.  
  90. public abstract class MinumanFactory
  91. {
  92.     public static Minuman getMinuman(String jenisMinuman)
  93.     {
  94.         if(jenisMinuman.equals(JenisMinuman.TEH_HIJAU))
  95.         {
  96.             return new TehHijau();
  97.         }
  98.         else if(jenisMinuman.equals(JenisMinuman.TEH_MANIS))
  99.         {
  100.             return new TehManis();
  101.         }
  102.         else if(jenisMinuman.equals(JenisMinuman.TEH_TAWAR))
  103.         {
  104.             return new TehTawar();
  105.         }
  106.         return null;
  107.     }
  108. }
  109.  
  110.  
  111. * Class Minuman
  112.  
  113. public interface Minuman
  114. {
  115.     void rasa();
  116. }
  117.  
  118.  
  119. * Class Teh Tawar
  120.  
  121. public class TehTawar implements Minuman
  122. {
  123.     private String namaMinuman = TehTawar.class.getSimpleName();
  124.  
  125.    
  126.     String TehTawar = "Teh Tawar";
  127.     @Override
  128.     public void rasa() {
  129.         // TODO Auto-generated method stub
  130.         System.out.println(TehTawar + "   : Rasanya hambar, Tapi sangat cocok di sajikan saat makan....\n");
  131.     }
  132. }
  133.  
  134.  
  135. * Class Teh Manis
  136.  
  137. public class TehManis implements Minuman
  138. {
  139.  
  140.    
  141.     private String namaMinuman = TehManis.class.getSimpleName();
  142.  
  143.    
  144.         String TehManis = "Teh Manis";
  145.     @Override
  146.     public void rasa()
  147.     {
  148.         // TODO Auto-generated method stub
  149.         System.out.println(TehManis + "   : Rasanya manis, tapi menyegerkan....\n");
  150.     }
  151. }
  152.  
  153.  
  154. * Class Teh Hijau
  155.  
  156. public class TehHijau implements Minuman
  157. {
  158.     private String namaMinuman = TehHijau.class.getSimpleName();
  159.    
  160.     String TehHijau = "Teh Hijau";
  161.     @Override
  162.     public void rasa() {
  163.         // TODO Auto-generated method stub
  164.         System.out.println(TehHijau+"   : Rasanya sangat pahit, tapi menyehatkan....\n");
  165.     }
  166.    
  167. }
  168.  
  169.  
  170. * Class Makanan Factory
  171.  
  172. public class MakananFactory extends AbstractFactory
  173. {
  174.  
  175.     @Override
  176.     Makanan getMakanan(String makanan) {
  177.         if(makanan.equals(JenisMakanan.NASI_GORENG))
  178.         {
  179.             return new NasiGoreng();
  180.         }
  181.         else if(makanan.equals(JenisMakanan.NASI_PADANG))
  182.         {
  183.             return new NasiPadang();
  184.         }
  185.         else if(makanan.equals(JenisMakanan.NASI_UDUK))
  186.         {
  187.             return new NasiUduk();
  188.         }
  189.         return null;
  190.     }
  191.  
  192.     @Override
  193.     Minuman getMinuman(String minuman) {
  194.         // TODO Auto-generated method stub
  195.         return null;
  196.     }
  197. }
  198.  
  199.  
  200. * Class Makanan
  201.  
  202. public interface Makanan
  203. {
  204.     void harga();
  205. }
  206.  
  207.  
  208. * Class Nasi Padang
  209.  
  210. public class NasiPadang implements Makanan
  211. {
  212.     private String namaMakanan = NasiPadang.class.getSimpleName();
  213.  
  214.     String NasiPadang = "Nasi Padang";
  215.     @Override
  216.     public void harga() {
  217.         // TODO Auto-generated method stub
  218.         System.out.println(NasiPadang + " : Harganya 15.000 , Mantap bro....\n");
  219.     }
  220. }
  221.  
  222.  
  223. * Class Nasi Goreng
  224.  
  225. public class NasiGoreng implements Makanan
  226. {
  227.     private String namaMakanan = NasiGoreng.class.getSimpleName();
  228.    
  229.     String NasiGoreng = "Nasi Goreng";
  230.    
  231.     @Override
  232.     public void harga() {
  233.         // TODO Auto-generated method stub
  234.         System.out.println(NasiGoreng + " : Harganya 10.000 ,Maknuys Boss....\n");
  235.     }
  236. }
  237.  
  238.  
  239. * Class Nasi Uduk
  240.  
  241. public class NasiUduk implements Makanan
  242. {
  243.     private String namaMakanan = NasiUduk.class.getSimpleName();
  244.  
  245.     String NasiUduk = "Nasi Uduk";
  246.     @Override
  247.     public void harga() {
  248.         // TODO Auto-generated method stub
  249.         System.out.println(NasiUduk + "   : Harganya cuman 6000 , Mantap !\n");
  250.     }
  251. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement