Pola Pembangun

Pola pembangun memungkinkan pembuatan objek kompleks secara prosedural.

Bayangkan sebuah skenario di mana Anda membuat aplikasi yang memungkinkan pengguna membangun rumahnya sendiri. Karena Anda ingin pengguna menyukai produk Anda, Anda memberi mereka banyak pilihan. Mereka dapat menambahkan kolam, taman, internet, dinding, dan bahkan atap (bayangkan, atap asli!). Ada beberapa cara untuk melakukan pendekatan ini dari perspektif kode.

Solusi pertama adalah dengan membuat konstruktor monster untuk kelas House. Konstruktor ini dapat menerima sejumlah besar parameter yang menentukan properti apa yang dimiliki kelas House tertentu. Ini jelas mempunyai kelemahan. Semakin banyak opsi yang ditambahkan, konstruktor akan bertambah; dengan sangat cepat menciptakan konstruktor jelek. Selain itu, sering kali, beberapa parameter tidak digunakan sehingga menambah kompleksitas yang tidak perlu pada kelas House.

class House {  
  constructor(walls, pool, roof, garden, internet, ...) {...}
}

Solusi kedua adalah dengan menggunakan pewarisan klasik. Anda dapat membuat kelas House dasar, dan membuat subkelas untuk setiap variasi dari sana. Anda mungkin langsung tahu bahwa pendekatan ini tidak akan berkembang sama sekali. Semakin banyak pilihan yang Anda tambahkan ke rumah (seperti kamar mandi mungkin), semakin banyak sub-kelas yang perlu Anda tambahkan.

Pola pembangun untuk menyelamatkan! Pola pembangun menyarankan Anda mengekstrak komponen rumah ke dalam kelas baru. Untuk kasus penggunaan kita, sebut saja HouseBuilder (kejutan!). Kami kemudian akan menambahkan semua properti sebagai metode pada HouseBuilder. Kita akan menambahkan addPools(), addGardens(), addInternet(), addWalls(), addRoof(), dst. Setelah kita menambahkan semua metode tersebut, kita perlu menambahkan metode getHouse() untuk mengambil rumah yang dibangun. Sesuatu yang penting untuk diperhatikan adalah Anda harus mengatur ulang pembuatnya setelah Anda mengambil produk. Biasanya hal ini dilakukan di dalam metode getHouse(), namun Anda dapat memanggilnya secara manual dari tempat lain.

Jadi mari kita lihat contoh kode dengan implementasi yang sangat mendasar.

Dan begitulah kita memilikinya. Sebuah rumah yang indah.

Mari kita kembangkan hal ini lebih jauh lagi. Katakanlah jenis rumah yang baru saja kita bangun adalah rumah yang sangat umum. Sebut saja FamilyHouse. Semua orang menyukainya. Dan mungkin ada kombinasi lain yang sangat populer. Jadi, Anda memutuskan untuk membuat fitur di produk Anda yang memungkinkan pengguna memilih dari daftar kombinasi rumah yang telah ditentukan sebelumnya. Untuk mencapai hal ini kita dapat menambahkan lapisan abstraksi lain dengan menciptakan apa yang dikenal sebagai kelas direktur. Kelas direktur mendefinisikan metode pembangunan mana yang kita panggil untuk membangun tiperumah tertentu. Mari kita lihat bagaimana kita membuat direktur untuk rumah jenis ini.

Dan begitulah, seorang sutradara melakukan semua pekerjaan kasar untuk Anda. Sekarang untuk beberapa pro dan kontra.

Kelebihan:

  • Anda mengontrol pembuatan objek. Langkah demi langkah.
  • Prinsip tanggung jawab tunggal dipatuhi

Kekurangan:

  • Menggunakan pola ini dengan implementasi sederhana dapat membuat kode menjadi lebih kompleks daripada yang diperlukan.

Itu saja untuk pola pembangun. Pada artikel selanjutnya saya akan membahas pola desain Pabrik (jangan bingung dengan pola Abstrak Pabrik). Sampai jumpa di sana!