Kami memiliki Aplikasi Web di mana kami memiliki banyak (> 50) komponen Web kecil yang berinteraksi satu sama lain.
Agar semuanya dipisahkan, kita memiliki aturan bahwa tidak ada komponen yang dapat langsung merujuk yang lain. Alih-alih, komponen mengaktifkan peristiwa yang kemudian (dalam aplikasi "utama") terhubung untuk memanggil metode komponen lain.
Seiring berjalannya waktu, semakin banyak komponen yang ditambahkan dan file aplikasi "utama" menjadi berserakan dengan potongan kode yang terlihat seperti ini:
buttonsToolbar.addEventListener('request-toggle-contact-form-modal', () => {
contactForm.toggle()
})
buttonsToolbar.addEventListener('request-toggle-bug-reporter-modal', () => {
bugReporter.toggle()
})
// ... etc
Untuk memperbaiki ini kami mengelompokkan fungsi yang sama bersama-sama, dalam Class
, beri nama itu sesuatu yang relevan, melewati elemen yang berpartisipasi ketika instantiating dan menangani "kabel" di dalam Class
, seperti:
class Contact {
constructor(contactForm, bugReporter, buttonsToolbar) {
this.contactForm = contactForm
this.bugReporterForm = bugReporterForm
this.buttonsToolbar = buttonsToolbar
this.buttonsToolbar
.addEventListener('request-toggle-contact-form-modal', () => {
this.toggleContactForm()
})
this.buttonsToolbar
.addEventListener('request-toggle-bug-reporter-modal', () => {
this.toggleBugReporterForm()
})
}
toggleContactForm() {
this.contactForm.toggle()
}
toggleBugReporterForm() {
this.bugReporterForm.toggle()
}
}
dan kami instantiate seperti:
<html>
<contact-form></contact-form>
<bug-reporter></bug-reporter>
<script>
const contact = new Contact(
document.querySelector('contact-form'),
document.querySelector('bug-form')
)
</script>
</html>
Saya benar-benar lelah memperkenalkan pola saya sendiri, terutama yang tidak benar-benar OOP-y karena saya gunakan Classes
sebagai wadah inisialisasi belaka, karena tidak ada kata yang lebih baik.
Apakah ada pola yang lebih baik / lebih dikenal untuk menangani jenis tugas yang saya lewatkan?