Latihan 1: Mediator Pattern — Design Patterns

Latihan 1 dari materi Mediator Pattern di Design Patterns — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.

Starter sudah membuat form, mendaftarkan handler validator, memanggil setField tiga kali dan submit sekali, lalu mencetak enam baris; bagian itu tetap. Lengkapi createFormMediator():

  1. Siapkan const handlers = new Map(), const fields = {}, dan const events = [] di dalamnya, buat object mediator, lalu kembalikan object itu.
  2. register(name, handler): simpan dengan handlers.set(name, handler).
  3. setField(name, value): isi fields[name] = value, buat const event = { type: 'fieldChanged', name: name, value: value }, push ke events, lalu panggil semua handler: handlers.forEach((handler) => handler(event, mediator)).
  4. getField(name): kembalikan fields[name].
  5. submit(): buat event { type: 'submit', fields: { ...fields } }, push ke events, lalu panggil semua handler dengan cara yang sama.
  6. log(): kembalikan events.

Console harus mencetak enam baris ini, berurutan:

  1. invalid
  2. valid
  3. [email protected]
  4. Budi
  5. submitted:2
  6. 4

Yang juga dinilai: dua handler yang didaftarkan ("a" dan "b") sama-sama menerima satu event dari satu setField, jadi hasilnya 1|1. Dan handler bernama kota yang menerima setField("kota", "Bandung") lalu submit() menghasilkan Bandung|fieldChanged,submit|2.

Hint