Latest web development tutorials

Model Builder

Modus Builder (pembangun Pola) menggunakan sejumlah benda sederhana untuk membangun langkah demi langkah menjadi obyek yang kompleks. Jenis pola desain milik membuat skema, yang menyediakan cara terbaik untuk membuat objek.

kelas Builder adalah langkah demi langkah untuk membangun objek akhir. Kelas Builder independen dari objek lain.

pengenalan

Maksud: kompleks membangun pemisahan perwakilannya, sehingga proses konstruksi yang sama dapat membuat representasi yang berbeda.

Terutama untuk mengatasi: solusi utama dalam sistem perangkat lunak, kadang-kadang menghadapi "sebuah obyek yang kompleks" untuk menciptakan pekerjaan, yang biasanya algoritma tertentu terdiri dari berbagai bagian dari sub-objek; karena perubahan permintaan, berbagai bagian dari subjek yang rumit ini sering wajah perubahan drastis, tetapi mereka akan menggabungkan algoritma relatif stabil.

Kapan menggunakan: itu tidak akan mengubah beberapa komponen dasar, dan kombinasinya terus berubah kali.

Cara untuk memperbaiki: berubah dan tidak berubah dipisahkan.

Kode kunci: Builder: Membuat dan memberikan contoh, Direktur: manajemen ketergantungan dibangun misalnya.

contoh aplikasi: 1, pergi ke KFC, Burger, cola, kentang goreng, sayap ayam goreng, dll adalah konstan, dan komposisinya terus berubah, menghasilkan apa yang disebut "paket."2, JAWA di StringBuilder.

Keuntungan: 1, sebuah pembangun independen, mudah untuk memperluas.2, mudah untuk mengontrol rincian risiko.

Kekurangan: 1, produk harus memiliki kesamaan, kisaran terbatas.2. perubahan internal yang kompleks, akan ada banyak kelas konstruksi.

Penggunaan skenario: 1, Anda perlu untuk menghasilkan objek memiliki struktur internal yang kompleks.2, perlu dihasilkan dalam properti obyek itu sendiri saling tergantung.

Catatan: Perbedaan antara model tanaman: Model Builder adalah lebih peduli dengan urutan perakitan bagian.

realisasi

Kami berasumsi bahwa kasus bisnis restoran cepat saji, di mana sebuah paket dapat menjadi burger khas (Burger) dan segelas dingin (minuman dingin). Burger (burger) dapat burger vegetarian (sayuran burger) atau ayam burger (burger ayam), mereka dibungkus dalam baki kertas. Dingin (Cold minuman) mungkin Coca-Cola (kokas) atau Pepsi (pepsi), mereka yang dikemas dalam botol.

Kami akan membuat representasi dari makanan (seperti burger dan dingin) dari antarmukaBarangdan implementasi entitas kelasItemantarmuka, dan antarmuka dan implementasi entitas mewakiliPackingmakanan kemasan antarmukaPacking,Hamburg adalah paket dalam baki kertas dingin dikemas dalam botol.

Kemudian kita membuatkelas Meal,ArrayList danmakananuntuk membuat berbagai jenis objek melalui kombinasiBarangMealBuilder denganItem.BuilderPatternDemo, kami menunjukkan penggunaan kelasMealBuilderuntuk membuatMeal a.

Pola pembangun diagram UML

Langkah 1

Menciptakan antarmuka entri makanan dan kemasan makanan.

Item.java

antarmuka publik Barang {
   Nama String publik ();
   Packing publik pengepakan ();
   Harga mengambang publik ();	
}

Packing.java

antarmuka publik Packing {
   String public pack ();
}

Langkah 2

Packing membuat kelas entitas mengimplementasikan antarmuka.

Wrapper.java

mengimplementasikan public class Wrapper Packing {

   @ Override
   String public pack () {
      kembali "Wrapper";
   }
}

Bottle.java

mengimplementasikan public class Botol Packing {

   @ Override
   String public pack () {
      kembali "Botol";
   }
}

Langkah 3

Buat Sebuah antarmuka kelas Item abstrak, kelas menyediakan fungsi default.

Burger.java

public abstract class Burger mengimplementasikan Barang {

   @ Override
   Packing publik kemasan () {
      kembali Wrapper baru ();
   }

   @ Override
   publik harga mengambang abstrak ();
}

ColdDrink.java

kelas abstrak publik ColdDrink mengimplementasikan Barang {

	@ Override
	Packing publik kemasan () {
       kembali Botol baru ();
	}

	@ Override
	publik harga mengambang abstrak ();
}

Langkah 4

Membuat perpanjangan dari Burger kelas entitas dan ColdDrink.

VegBurger.java

public class VegBurger meluas Burger {

   @ Override
   Harga mengambang publik () {
      kembali 25.0f;
   }

   @ Override
   Nama String public () {
      kembali "Veg Burger";
   }
}

ChickenBurger.java

public class ChickenBurger meluas Burger {

   @ Override
   Harga mengambang publik () {
      kembali 50.5f;
   }

   @ Override
   Nama String public () {
      kembali "Chicken Burger";
   }
}

Coke.java

public class Coke meluas ColdDrink {

   @ Override
   Harga mengambang publik () {
      kembali 30.0f;
   }

   @ Override
   Nama String public () {
      kembali "Coke";
   }
}

Pepsi.java

public class Pepsi meluas ColdDrink {

   @ Override
   Harga mengambang publik () {
      kembali 35.0f;
   }

   @ Override
   Nama String public () {
      kembali "Pepsi";
   }
}

Langkah 5

Buat kelas Meal, dengan objek Butir didefinisikan di atas.

Meal.java

impor java.util.ArrayList;
import java.util.List;

public class Meal {
   Daftar pribadi <Barang> item = new ArrayList <Barang> ();	

   public void addItem (Butir item) {
      items.add (item);
   }

   mengambang publik getCost () {
      biaya mengapung = 0.0f;
      untuk (Barang barang: item) {
         biaya + = item.price ();
      }		
      kembali biaya;
   }

   kekosongan showItems publik () {
      untuk (Barang barang: item) {
         System.out.print ( "Item:" + item.name ());
         System.out.print (. ", Packing:" + Item.packing () pack ());
         System.out.println ( ", Harga:" + item.price ());
      }		
   }	
}

Langkah 6

MealBuilder membuat kelas, pembangun yang sebenarnya bertanggung jawab untuk menciptakan objek kelas Meal.

MealBuilder.java

public class MealBuilder {

   publik Meal prepareVegMeal () {
      Makan makanan = makan baru ();
      meal.addItem (VegBurger baru ());
      meal.addItem (Coke baru ());
      kembali makan;
   }   

   publik Meal prepareNonVegMeal () {
      Makan makanan = makan baru ();
      meal.addItem (ChickenBurger baru ());
      meal.addItem (Pepsi baru ());
      kembali makan;
   }
}

Langkah 7

BuiderPatternDemo menggunakan MealBuider untuk menunjukkan modus pembangun (Builder Pola).

BuilderPatternDemo.java

public class BuilderPatternDemo {
   public static void main (String [] args) {
      MealBuilder mealBuilder = baru MealBuilder ();

      Makan vegMeal = mealBuilder.prepareVegMeal ();
      System.out.println ( "Veg Meal");
      vegMeal.showItems ();
      System.out.println ( "Total Biaya:" + vegMeal.getCost ());

      Makan nonVegMeal = mealBuilder.prepareNonVegMeal ();
      System.out.println ( "\ n \ nFile non-sayuran Meal");
      nonVegMeal.showItems ();
      System.out.println ( "Total Biaya:" + nonVegMeal.getCost ());
   }
}

Langkah 8

Verifikasi output.

sayuran Meal
Item: Veg Burger, Packing: Wrapper, Harga: 25,0
Item: Coke, Packing: Botol, Harga: 30.0
Total Biaya: 55,0


Non-Veg Meal
Item: Chicken Burger, Packing: Wrapper, Harga: 50,5
Item: Pepsi, Packing: Botol, Harga: 35,0
Total Biaya: 85.5