1. Apa itu Design Patterns?
**Design Patterns** adalah solusi umum yang teruji untuk memecahkan masalah arsitektur perangkat lunak yang berulang. Di JavaScript modern, kita sering memanfaatkan pola-pola ini untuk merancang modul, sistem event komunikasi antar komponen, dan abstraksi objek.
2. Observer / Pub-Sub Pattern (Event-Driven Architecture)
Pola Observer memungkinkan objek penerbit (*Subject/Emitter*) memberi notifikasi secara otomatis ke banyak pelanggan (*Subscribers/Listeners*) saat ada event baru terjadi, tanpa perlu saling mengenal secara langsung (*loosely coupled*).
example.js
javascript
| 1 | class EventEmitter { |
| 2 | constructor() { |
| 3 | this.events = {}; |
| 4 | } |
| 5 | |
| 6 | on(eventName, listener) { |
| 7 | if (!this.events[eventName]) this.events[eventName] = []; |
| 8 | this.events[eventName].push(listener); |
| 9 | } |
| 10 | |
| 11 | emit(eventName, data) { |
| 12 | if (this.events[eventName]) { |
| 13 | this.events[eventName].forEach(listener => listener(data)); |
| 14 | } |
| 15 | } |
| 16 | } |
| 17 | |
| 18 | // Penggunaan: |
| 19 | const bus = new EventEmitter(); |
| 20 | bus.on('orderPlaced', (order) => console.log('Kirim Email ke:', order.email)); |
| 21 | bus.on('orderPlaced', (order) => console.log('Kurangi Stok Item:', order.itemId)); |
| 22 | |
| 23 | bus.emit('orderPlaced', { id: 'ORD-101', email: 'user@kulo.dev', itemId: 'ITM-99' }); |