Latihan 1: Abstract Factory Pattern — Design Patterns
Latihan 1 dari materi Abstract Factory Pattern di Design Patterns — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Lengkapi function createThemeFactory(theme) supaya mengembalikan object dengan dua method pembuat, createButton(label) dan createInput(placeholder), yang hasilnya sesuai tema.
Tema lain: langsung lempar new Error("Unknown theme") dari createThemeFactory, sebelum ada komponen yang dibuat.
Kode di bawah function sudah ada di starter dan tetap. Console harus mencetak empat baris ini, berurutan:
#fff #000
#111 #444
Cari...
Unknown theme (dicetak oleh catch)
Yang juga dinilai: createThemeFactory("neon") harus melempar error dengan pesan Unknown theme, dan createThemeFactory("dark").createButton("Kirim").label + "|" + createThemeFactory("dark").createButton("x").bg + "|" + createThemeFactory("light").createInput("Nama").border harus menghasilkan Kirim|#000|#ccc.
Hint
Satu tema adalah satu keluarga. Simpan warna tiap tema di satu tempat, pilih sekali dari theme, lalu kedua method pembuat membaca warna dari pilihan itu, jadi Button dan Input selalu setema.
Buat object palettes dengan kunci light dan dark, isinya warna button dan input. Ambil palettes[theme]; kalau gak ada, throw new Error("Unknown theme"). Lalu return { createButton(label) { ... }, createInput(placeholder) { ... } }.