rafibatam

Design Pattern Abstract Factory JAVA

Feb 25th, 2019
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.52 KB | None | 0 0
  1. 1. Abstract Factory Pattern adalah sebuah factory object yang akan mengembalikan salah satu dari beberapa factory.
  2. 2. Kelebihan Abstract Factory Pattern =
  3. - Dapat digunakan untuk pembuatan yang memungkinkan banyak method dan modul yang bersifat multiple
  4. - Menjadikan sebuah design aplikasi menjadi terstruktur
  5. 3. Kekurangan Abstract Factory Pattern =
  6. - Harus mendefinisikan sebuah family atau abstract product jika ingin menambahkan sebuah product yang tidak termasuk dalam family yang sudah ada
  7. - Jumlah kelas semakin banyak
  8. 4. Kapan digunakan Abstract Factory Pattern = Saat ingin menghasilkan object yang berasal dari salah satu beberapa class yang berkaitan, dimana object tersebut dapat mengembalikan beberapa object lain yang berbeda
  9. 5. Apa yang dilakukan ketika tidak boleh menggunakan Abstract Factory Pattern =
  10.  
  11. interface Mobil {
  12.     void merk();
  13. }
  14.  
  15. interface Motor {
  16.     void merk();
  17. }
  18.  
  19.  
  20. class Lamborghini implements Mobil {
  21.     private String merkMobil = Lamborghini.class.getSimpleName();
  22.    
  23.     @Override
  24.     public void merk() {
  25.         System.out.println("Nama Mobil Lamborghini : ");
  26.         System.out.println("1. " + merkMobil + " Veneno"
  27.                 + "\n2. " + merkMobil + " Egoista"
  28.                 + "\n3. " + merkMobil + " Veneno Roadster"
  29.                 + "\n4. " + merkMobil + " Aventador J"
  30.                 + "\n5. " + merkMobil + " Reventon Roadster");
  31.     }
  32. }
  33.  
  34. class Ferrari implements Mobil {
  35.     private String merkMobil = Ferrari.class.getSimpleName();
  36.    
  37.     @Override
  38.     public void merk() {
  39.         System.out.println("\nNama Mobil Ferrari :");
  40.         System.out.println("1. " + merkMobil + " Four"
  41.                 + "\n2. " + merkMobil + " 458 Italia"
  42.                 + "\n3. " + merkMobil + " 458 Spider"
  43.                 + "\n4. " + merkMobil + " La Ferrari"
  44.                 + "\n5. " + merkMobil + " F12 Berlinetta");
  45.     }
  46. }
  47.  
  48.  
  49. class Ducati implements Motor {
  50.     private String merkMotor = Ducati.class.getSimpleName();
  51.    
  52.     @Override
  53.     public void merk() {
  54.         System.out.println("\nNama Motor Ducati : ");
  55.         System.out.println("1. " + merkMotor + " Panigale"
  56.                 + "\n2. " + merkMotor + " Diavel"
  57.                 + "\n3. " + merkMotor + " MultiStrada"
  58.                 + "\n4. " + merkMotor + " Monster"
  59.                 + "\n5. " + merkMotor + " Hypermotard");
  60.     }
  61. }
  62.  
  63. class BMW implements Motor {
  64.     private String merkMotor = BMW.class.getSimpleName();
  65.    
  66.     @Override
  67.     public void merk() {
  68.         System.out.println("\nNama Motor BMW : ");
  69.         System.out.println("1. " + merkMotor + " R 1200 RT"
  70.                 + "\n2. " + merkMotor + " S 1000RR"
  71.                 + "\n3. " + merkMotor + " HP4 Race"
  72.                 + "\n4. " + merkMotor + " R Nine T"
  73.                 + "\n5. " + merkMotor + " K 1600 B");
  74.     }
  75. }
  76.  
  77.  
  78. abstract class AbstractFactory {
  79.     abstract Mobil getMobil(String mobil);
  80.     abstract Motor getMotor(String motor);
  81. }
  82.  
  83.  
  84. class merkMobil {
  85.     public static final String Lamborghini = "Lamborghini";
  86.     public static final String Ferrari = "Ferrari";
  87. }
  88.  
  89. class merkMotor {
  90.     public static final String Ducati = "Ducati";
  91.     public static final String BMW = "BMW";
  92. }
  93.  
  94.  
  95. class mobilFactory extends AbstractFactory {
  96.  
  97.     @Override
  98.     Mobil getMobil(String mobil) {
  99.         if(mobil.equals(merkMobil.Lamborghini)) {
  100.             return new Lamborghini();
  101.         }
  102.        
  103.         else if(mobil.equals(merkMobil.Ferrari)) {
  104.             return new Ferrari();
  105.         }
  106.         return null;
  107.     }
  108.    
  109.  
  110.     @Override
  111.     Motor getMotor(String motor) {
  112.         return null;
  113.     }
  114. }
  115.  
  116. class motorFactory extends AbstractFactory {
  117.     @Override
  118.     Motor getMotor(String motor) {
  119.         if(motor.equals(merkMotor.Ducati)) {
  120.             return new Ducati();   
  121.         }
  122.        
  123.         else if(motor.equals(merkMotor.BMW)) {
  124.             return new BMW();
  125.         }
  126.         return null;
  127.     }
  128.    
  129.     @Override
  130.     Mobil getMobil(String mobil) {
  131.         return null;
  132.     }
  133. }
  134.  
  135.  
  136. class Factory {
  137.     public static final String PILIH_MOBIL = "Memilih Mobil";
  138.     public static final String PILIH_MOTOR = "Memilih Motor";
  139.    
  140.     public static AbstractFactory getFactory(String pilihan) {
  141.         if(pilihan.equals(PILIH_MOBIL)) {
  142.             return new mobilFactory();
  143.         }
  144.        
  145.         else if(pilihan.equals(PILIH_MOTOR)) {
  146.             return new motorFactory();
  147.         }
  148.        
  149.         return null;
  150.     }
  151. }
  152.  
  153.  
  154. public class Comments {
  155.     public static void main(String[] args) {
  156.         AbstractFactory mobilFactory = Factory.getFactory(Factory.PILIH_MOBIL);
  157.         Mobil type1 = mobilFactory.getMobil(merkMobil.Lamborghini);
  158.         type1.merk();
  159.        
  160.         Mobil type2 = mobilFactory.getMobil(merkMobil.Ferrari);
  161.         type2.merk();
  162.        
  163.         AbstractFactory motorFactory = Factory.getFactory(Factory.PILIH_MOTOR);
  164.         Motor type3 = motorFactory.getMotor(merkMotor.Ducati);
  165.         type3.merk();
  166.        
  167.         Motor type4 = motorFactory.getMotor(merkMotor.BMW);
  168.         type4.merk();
  169.     }
  170. }
Advertisement
Add Comment
Please, Sign In to add comment