Builder

chmood

   Memisahkan pembangunan obyek yang kompleks dari perwakilannya sehingga proses konstruksi yang sama dapat membuat representasi yang berbeda.
Mengurai representasi kompleks, membuat salah satu dari beberapa target.
Masalah
Sebuah aplikasi perlu menciptakan unsur-unsur dari agregat kompleks. Spesifikasi untuk agregat ada pada penyimpanan sekunder dan salah satu dari banyak representasi perlu dibangun dalam penyimpanan utama.


   Pisahkan algoritma untuk menafsirkan (yaitu membaca dan parsing) mekanisme ketekunan disimpan (misalnya file RTF) dari algoritma untuk membangun dan mewakili salah satu dari banyak produk sasaran (misalnya ASCII, TeX, widget teks). Fokus / perbedaan adalah pada menciptakan agregat kompleks.

"Direktur" memanggil "pembangun" jasa karena menafsirkan format eksternal. The "pembangun" menciptakan bagian dari obyek yang kompleks setiap kali disebut dan memelihara semua negara menengah. Ketika produk selesai, klien mengambil hasil dari "pembangun".

Memberi kontrol yang lebih baik atas proses konstruksi. Tidak seperti pola penciptaan yang membangun produk dalam satu tembakan, pola Builder membangun langkah demi langkah produk di bawah kendali "direktur".

Struktur

Pembaca yang merangkum parsing dari input yang umum. Hirarki Builder memungkinkan penciptaan polimorfik banyak representasi atau target yang aneh.




Contoh

   Pola Builder memisahkan pembangunan obyek yang kompleks dari perwakilannya sehingga proses konstruksi yang sama dapat membuat representasi yang berbeda. Pola ini digunakan oleh restoran cepat saji untuk membangun makanan anak-anak. Anak-anak makan biasanya terdiri dari item utama, sisi item, minum, dan mainan (misalnya, hamburger, kentang goreng, Coke, dan mainan dinosaurus). Perhatikan bahwa ada dapat menjadi variasi dalam isi makanan anak-anak, tetapi proses konstruksi adalah sama. Apakah pelanggan memerintahkan hamburger, cheeseburger, atau ayam, proses adalah sama. Karyawan di meja mengarahkan kru untuk merakit utama item, item sisi, dan mainan. Barang-barang ini kemudian ditempatkan dalam sebuah tas. Minuman ditempatkan dalam cangkir dan tetap berada di luar tas. Proses yang sama ini digunakan di restoran bersaing.


Periksa daftar

Memutuskan apakah input yang umum dan banyak representasi mungkin (atau output) adalah masalah yang dihadapi.
Merangkum parsing dari input yang umum di kelas Reader.
Merancang protokol standar untuk membuat semua representasi output yang mungkin. Menangkap langkah dari protokol ini dalam antarmuka Builder.
Mendefinisikan kelas Builder diturunkan untuk setiap representasi sasaran.
Klien membuat objek Reader dan objek Builder, dan register yang terakhir dengan mantan.
Klien meminta Reader untuk "membangun".
Klien meminta Builder untuk kembali hasilnya.
Aturan praktis
Terkadang pola penciptaan adalah complementory: Builder dapat menggunakan salah satu pola lain untuk menerapkan komponen mana yang bisa dibangun. Abstrak Pabrik, Builder, dan Prototype dapat menggunakan Singleton dalam implementasi mereka.
Builder berfokus pada membangun objek langkah demi langkah yang kompleks. Pabrik abstrak menekankan keluarga benda produk (baik sederhana atau kompleks). Builder mengembalikan produk sebagai langkah terakhir, tapi sejauh Abstrak Pabrik yang bersangkutan, produk akan kembali segera.
Builder sering membangun Komposit.
Seringkali, desain mulai menggunakan Metode Pabrik (kurang rumit, lebih disesuaikan, subclass berkembang biak) dan berkembang ke arah Abstrak Pabrik, Prototype, atau Builder (lebih fleksibel, lebih kompleks) sebagai desainer menemukan di mana lebih fleksibel diperlukan






Komentar