Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1. Abstract Factory Pattern adalah sebuah factory object yang akan mengembalikan salah satu dari beberapa factory.
- 2. Kelebihan Abstract Factory Pattern =
- - Dapat digunakan untuk pembuatan yang memungkinkan banyak method dan modul yang bersifat multiple
- - Menjadikan sebuah design aplikasi menjadi terstruktur
- 3. Kekurangan Abstract Factory Pattern =
- - Harus mendefinisikan sebuah family atau abstract product jika ingin menambahkan sebuah product yang tidak termasuk dalam family yang sudah ada
- - Jumlah kelas semakin banyak
- 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
- 5. Apa yang dilakukan ketika tidak boleh menggunakan Abstract Factory Pattern =
- interface Mobil {
- void merk();
- }
- interface Motor {
- void merk();
- }
- class Lamborghini implements Mobil {
- private String merkMobil = Lamborghini.class.getSimpleName();
- @Override
- public void merk() {
- System.out.println("Nama Mobil Lamborghini : ");
- System.out.println("1. " + merkMobil + " Veneno"
- + "\n2. " + merkMobil + " Egoista"
- + "\n3. " + merkMobil + " Veneno Roadster"
- + "\n4. " + merkMobil + " Aventador J"
- + "\n5. " + merkMobil + " Reventon Roadster");
- }
- }
- class Ferrari implements Mobil {
- private String merkMobil = Ferrari.class.getSimpleName();
- @Override
- public void merk() {
- System.out.println("\nNama Mobil Ferrari :");
- System.out.println("1. " + merkMobil + " Four"
- + "\n2. " + merkMobil + " 458 Italia"
- + "\n3. " + merkMobil + " 458 Spider"
- + "\n4. " + merkMobil + " La Ferrari"
- + "\n5. " + merkMobil + " F12 Berlinetta");
- }
- }
- class Ducati implements Motor {
- private String merkMotor = Ducati.class.getSimpleName();
- @Override
- public void merk() {
- System.out.println("\nNama Motor Ducati : ");
- System.out.println("1. " + merkMotor + " Panigale"
- + "\n2. " + merkMotor + " Diavel"
- + "\n3. " + merkMotor + " MultiStrada"
- + "\n4. " + merkMotor + " Monster"
- + "\n5. " + merkMotor + " Hypermotard");
- }
- }
- class BMW implements Motor {
- private String merkMotor = BMW.class.getSimpleName();
- @Override
- public void merk() {
- System.out.println("\nNama Motor BMW : ");
- System.out.println("1. " + merkMotor + " R 1200 RT"
- + "\n2. " + merkMotor + " S 1000RR"
- + "\n3. " + merkMotor + " HP4 Race"
- + "\n4. " + merkMotor + " R Nine T"
- + "\n5. " + merkMotor + " K 1600 B");
- }
- }
- abstract class AbstractFactory {
- abstract Mobil getMobil(String mobil);
- abstract Motor getMotor(String motor);
- }
- class merkMobil {
- public static final String Lamborghini = "Lamborghini";
- public static final String Ferrari = "Ferrari";
- }
- class merkMotor {
- public static final String Ducati = "Ducati";
- public static final String BMW = "BMW";
- }
- class mobilFactory extends AbstractFactory {
- @Override
- Mobil getMobil(String mobil) {
- if(mobil.equals(merkMobil.Lamborghini)) {
- return new Lamborghini();
- }
- else if(mobil.equals(merkMobil.Ferrari)) {
- return new Ferrari();
- }
- return null;
- }
- @Override
- Motor getMotor(String motor) {
- return null;
- }
- }
- class motorFactory extends AbstractFactory {
- @Override
- Motor getMotor(String motor) {
- if(motor.equals(merkMotor.Ducati)) {
- return new Ducati();
- }
- else if(motor.equals(merkMotor.BMW)) {
- return new BMW();
- }
- return null;
- }
- @Override
- Mobil getMobil(String mobil) {
- return null;
- }
- }
- class Factory {
- public static final String PILIH_MOBIL = "Memilih Mobil";
- public static final String PILIH_MOTOR = "Memilih Motor";
- public static AbstractFactory getFactory(String pilihan) {
- if(pilihan.equals(PILIH_MOBIL)) {
- return new mobilFactory();
- }
- else if(pilihan.equals(PILIH_MOTOR)) {
- return new motorFactory();
- }
- return null;
- }
- }
- public class Comments {
- public static void main(String[] args) {
- AbstractFactory mobilFactory = Factory.getFactory(Factory.PILIH_MOBIL);
- Mobil type1 = mobilFactory.getMobil(merkMobil.Lamborghini);
- type1.merk();
- Mobil type2 = mobilFactory.getMobil(merkMobil.Ferrari);
- type2.merk();
- AbstractFactory motorFactory = Factory.getFactory(Factory.PILIH_MOTOR);
- Motor type3 = motorFactory.getMotor(merkMotor.Ducati);
- type3.merk();
- Motor type4 = motorFactory.getMotor(merkMotor.BMW);
- type4.merk();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment