Pola desain Builder merangkum properti objek dan memungkinkan Anda membuat representasinya. Pola ini memungkinkan Anda membuat objek yang kompleks, dengan properti yang berbeda meskipun milik kelas yang sama.
Kelas objek tipikal berisi atribut, konstruktor, dan metode. Pola pembangun memungkinkan Anda mengekstrak logika konstruksi dari kelas objek dan menempatkannya ke dalam kelas yang disebut pembangun. Anda kemudian dapat menggunakan kelas pembangun ini untuk membuat variasi yang berbeda dari objek yang sama.
Menerapkan Pola Builder di Jawa
Contoh yang baik dari pola pembangun adalah sistem pemesanan pizza yang memungkinkan pelanggan memilih opsi topping yang berbeda.
Kelas Produk
Salah satu pendekatannya adalah menjadikan pembangun sebuah antarmuka, tetapi Anda harus membuat kelas produk terlebih dahulu. Produk dalam contoh aplikasi ini adalah pizza.
publikkelasPizza{
// properti
pribadiint jumlah order;
pribadi Rangkaian adonan pizza;
pribadi Rangkaian tambahan;
// getter dan setter
publikintgetOrderNumber(){
kembali jumlah order;
}
publikruang kosongsetOrderNumber(int jumlah order){
ini.JumlahPesan =JumlahPesan;
}
publik Rangkaian getPizzaDough(){
kembali adonan pizza;
}
publikruang kosongsetPizzaDough(Rangkai adonan pizza){
ini.pizzaDough = adonan pizza;
}
publik Rangkaian getTopping(){
kembali tambahan;
}
publikruang kosongsetTopping(Topping tali){
ini.topping = taburan;
}
}
Kelas Pembangun
Pizza kelas Jawa memiliki tiga properti dan getter dan setter masing-masing, tetapi tidak ada metode konstruktor. Antarmuka pembangun akan memungkinkan Anda membuat setiap aspek objek pizza secara terpisah. Ini kemudian akan memungkinkan Anda untuk mengambil seluruh objek pizza.
publikantarmukaPembangun{
publikruang kosongbuat PizzaDough();
publikruang kosongbuatTopping();
publik Pizza getPizza();
}
Aplikasi sampel pizza memungkinkan pelanggan untuk memesan topping apa pun, seperti keju, pepperoni, bawang, atau kombinasi yang berbeda. Oleh karena itu, salah satu pizza yang akan dipesan pelanggan adalah keju.
publikkelasCheesePizzaBuilderalatPembangun{
pribadi pizza pizza;
publikCheesePizzaBuilder(){
ini.pizza = baru Pizza();
}
@Mengesampingkan
publikruang kosongbuat PizzaDough(){
ini.pizza.setPizzaDough("Adonan");
}
@Mengesampingkan
publikruang kosongbuatTopping(){
ini.pizza.setTopping("Keju");
}
@Mengesampingkan
publik Pizza getPizza(){
kembaliini.Pizza;
}
}
Kelas CheesePizzaBuilder mengimplementasikan antarmuka Builder dan menggunakannya untuk membuat pizza keju baru. Ini adalah salah satu representasi dari objek Pizza. Ini juga dilakukan dengan cara yang tidak tergantung pada kelas Pizza.
Kelas CheesePizzaBuilder tidak tahu banyak tentang kelas Pizza, ia hanya tahu apa yang perlu diketahui untuk menyelesaikan fungsinya. Ia mengetahui bahwa kelas Pizza memiliki properti adonan dan topping, dan ia menyetel properti ini ke dua nilai spesifik yang akan dimiliki setiap pizza keju. Sekarang setiap kali aplikasi memanggil kelas CheesePizzaBuilder, ia akan membuat Pizza baru yang memiliki topping keju.
Kelas Direktur
Kelas direktur adalah aspek penting dari pola pembangun. Satu-satunya tujuan kelas pembangun beton adalah untuk membuat objek tertentu. Ini dicapai dengan membuat bagian-bagian berbeda dari suatu objek secara terpisah.
Namun, kelas beton pembangun tidak mengetahui algoritme. Tidak ada kelas pembuat yang tahu cara membuat adonan sebelum menambahkan topping. Ini adalah fungsi dari kelas direktur.
publikkelasDirektur{
pribadi Pembuat pizzaBuilder;
publikDirektur(Pembuat pizzaBuilder){
ini.pizzaBuilder = pizzaBuilder;
}
publik Pizza getPizza(){
kembaliini.pizzaBuilder.getPizza();
}
publikruang kosongmakePizza(){
ini.pizzaBuilder.membuat PizzaDough();
ini.pizzaBuilder.createTopping();
}
}
Kelas Direktur menggunakan antarmuka pembangun untuk membuat pizza. Itu adalah penjaga algoritma.
Keuntungan Menggunakan Builder Design Pattern
Keuntungan utama menggunakan pola desain pembangun adalah sifat enkapsulasinya. Ini adalah aspek penting dari rekayasa perangkat lunak, karena membantu dalam pengembangan aplikasi yang aman.
Keuntungan lain dari pola desain ini adalah pendekatan konstruksi objeknya. Ini memungkinkan Anda membuat proses multilangkah, di mana setiap langkah independen, yang membuat proses debug lebih mudah.