Pengertian dan Contoh Cara Membuat Java Builder Pattern

 


Builder Pattern membuat sistem yang kompleks dengan objek yang sederhana dan dengan pendekatan langkah demi langkah. Pola ini memisahkan konstruksi objek kompleks dari representasinya sehingga proses konstruksi yang sama dapat menciptakan representasi yang berbeda.


Implementasi

Diketahui sebuah restoran cepat saji, menjual Burger dan Minuman dingin (ColdDrink). Untuk burger ada beberapa jenis diantaranya Burger Sayuran (VegBurger) dan Burger Ayam (ChickenBurger). Sedangkan untuk minuman yaitu CocaCola dan Pepsi.

Lalu bagaimana jika ada pembeli, berarti harus kita harus memilih, menghitung dan mengemas barang tadi. Bagaimana penerapannya dalam Builder Pattern. Berikut adalah salah satu contohnya :



  1. Buat interface Packing.java

package design.pattern;

public interface Packing {
    public String pack();
}
 


  2. Buat interface Item.java

package design.pattern;

public interface Item {
    public String name();
    public Packing packing();
    public float price();
}



  3. Buat class Wrapper.java

 package design.pattern;

public class Wrapper implements Packing{

    @Override
    public String pack() {
        return "Bungkusan";
    }
    
}


  4. Buat class Bottle.java

 package design.pattern;

public class Bottle implements Packing {

    @Override
    public String pack() {
        return "botol";
    }
    
}


  5. Buat abstract class Burger.java

 package design.pattern;

public abstract class Burger implements Item{
    @Override
    public Packing packing(){
        return new Wrapper();
    }
    
    @Override
    public abstract float price();
}


  6. Buat abstract class ColdDrink.java

 package design.pattern;

public abstract class ColdDrink implements Item{
    
    @Override
    public Packing packing(){
        return new Bottle();
    }
    
    @Override
    public abstract float price();
}


  7. Buat class VegBurger.java

 package design.pattern;

public class VegBurger extends Burger {

    @Override
    public float price() {
        return 25000;
    }

    @Override
    public String name() {
        return "Veg Burger";
    }
}


  8. Buat class ChickenBurger.java

 package design.pattern;

public class ChickenBurger extends Burger{

    @Override
    public float price() {
        return 50000;
    }

    @Override
    public String name() {
        return "Burger Ayam";
    }
}


  9. Buat class CocaCola.java

 package design.pattern;

public class CocaCola extends ColdDrink {

    @Override
    public float price() {
        return 10000;
    }

    @Override
    public String name() {
        return "Coca Cola";
    } 
}


  10. Buat class Pepsi.java

 package design.pattern;

public class Pepsi extends ColdDrink {

    @Override
    public float price() {
        return 10000;
    }

    @Override
    public String name() {
        return "Pepsi";
    }
    
}


  11. Buat class Meal.java

 package design.pattern;

import java.util.*;

public class Meal {
    private List< item > items = new ArrayList< item >();
    
    public void add(Item item){
        items.add(item);
    }
    
    public float getCost(){
        float cost = 0.0f;
        
        for(Item item : items){
            cost += item.price();
        }
        return cost;
    }
    
    public void showItems(){
        for(Item item : items){
            System.out.print("item : "+item.name());
            System.out.print(", Packing "+item.packing().pack());
            System.out.println(", price "+item.price());
        }
    }
}


  12. Buat class MealBuilder.java

 package design.pattern;

public class Mealbuilder {
    public Meal prepareVegMeal(){
        Meal meal = new Meal();
        meal.add(new VegBurger());
        meal.add(new Pepsi());
        return meal;
    }
    
    public Meal prepareNonVegMeal(){
        Meal meal = new Meal();
        meal.add(new ChickenBurger());
        meal.add(new CocaCola());
        return meal;
    }
}



  13. Buat class BuilderPatternDemo.java

 package design.pattern;

public class BuilderPatternDemo {
    
    public static void main(String[] args){
        Mealbuilder mealBuilder = new Mealbuilder();
        
        Meal vegaMeal = mealBuilder.prepareVegMeal();
        System.out.println("Vega Meal");
        vegaMeal.showItems();
        System.out.println("Total cost : "+vegaMeal.getCost());
        
        
        Meal nonVegaMeal = mealBuilder.prepareNonVegMeal();
        System.out.println("\n\nNon Vega Meal");
        nonVegaMeal.showItems();
        System.out.println("Total cost : "+nonVegaMeal.getCost());
    }
}



  14. Verifikasi Output

Vega Meal
item : Veg Burger, Packing Bungkusan, price 25000.0
item : Pepsi, Packing botol, price 10000.0
Total cost : 35000.0


Non Vega Meal
item : Burger Ayam, Packing Bungkusan, price 50000.0
item : Coca Cola, Packing botol, price 10000.0
Total cost : 60000.0


Baca Juga : 
  Java Method Factory Pattern


Entri Sebelumnya :
  Java Abstract Factory Pattern



Pengertian dan Contoh Cara Membuat Java Builder Pattern 4.5 5 Ardyn Sulaeman Builder Pattern membuat sistem yang kompleks dengan objek yang sederhana dan dengan pendekatan langkah demi langkah. Pola ini memisahk...


No comments:

Post a Comment

Powered by Blogger.