Latihan 1 dari materi Proxy Pattern di Design Patterns — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Starter sudah berisi createDBConnection(), yang mencetak connecting... lalu mengembalikan object dengan query(sql) yang mengembalikan "result:" + sql. Starter juga sudah membuat proxy, mencetak proxy created, lalu memanggil query dua kali. Semuanya tetap. Lengkapi createDBProxy():
Simpan let connection = null di dalamnya. Jangan buat koneksi saat proxy dibuat.
Kembalikan object dengan method query(sql).
Di dalam query, kalau connection masih null, buat dengan createDBConnection(). Panggilan berikutnya memakai koneksi yang sama.
Kembalikan connection.query(sql) apa adanya.
Console harus mencetak empat baris ini, berurutan:
proxy created
connecting...
result:SELECT 1
result:SELECT 2
connecting... cuma muncul sekali. Yang juga dinilai: proxy baru dari createDBProxy() meneruskan query lain, jadi query("SELECT 9") mengembalikan "result:SELECT 9".
Hint
Virtual proxy menunda pembuatan object yang mahal sampai benar-benar dipakai. Membuat proxy-nya belum membuka koneksi; query pertama yang membukanya, lalu koneksinya disimpan.
function createDBProxy() { let connection = null; return { query(sql) { /* buat koneksi kalau belum ada, lalu teruskan sql */ } } }
query(sql) { if (!connection) connection = createDBConnection(); return connection.query(sql) }
</>{ }.css=>#idfn()
Versi baru
HyperSheets
bagian dari BelajarWeb.dev
0%
Membuka gerbang…
HyperSheets
Memperbarui Aplikasi
Versi baru tersedia. Halaman akan dimuat ulang otomatis...