Builder
Oleh
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
Category
Komentar