Pernah lagi ngerjain feature baru, terus tiba-tiba mikir "kayaknya pernah solve masalah kayak gini di project lain"? Atau lihat code di codebase lama yang struktur-nya konsisten + readable, padahal banyak developer berbeda yang nulis? Itu hasil dari design pattern — solusi terstandar untuk masalah yang sering muncul. Bukan kode copy-paste, tapi template berpikir: masalah X biasa di-solve dengan pattern Y. Hafalin pattern = hemat ribuan jam reinventing the wheel.
💡 Pattern bukan religion. Banyak developer terlalu kaku ngotot pakai pattern GoF (Gang of Four) di JavaScript — padahal banyak pattern yang relevan di Java/C++ jadi gak perlu di JS karena bahasa-nya lebih dynamic. Pelajari pattern untuk paham WHY, bukan untuk dihafalin sebagai mantra.
Analogi: Bayangkan kamu arsitek rumah. Kamu tidak merancang dari nol setiap kali — ada pola standar untuk pintu, jendela, tangga. Design pattern sama: solusi standar yang sudah diuji oleh ribuan developer.
Sejarah Singkat
Design pattern dipopulerkan oleh buku "Gang of Four" (GoF) tahun 1994. Tapi di JavaScript modern, kita tidak perlu mengikuti semua pola GoF secara kaku. Banyak pattern sudah tersembunyi di dalam framework yang kita pakai sehari-hari.
Pattern yang sudah kamu pakai tanpa sadar:
// Observer Pattern — React useState
const [count, setCount] = useState(0);
// Setiap kali setCount dipanggil, komponen "terobserve" dan re-render
// Singleton Pattern — Redux store
const store = createStore(reducer);
// Hanya ada 1 store untuk seluruh aplikasi
// Factory Pattern — React.createElement
React.createElement("div", { className: "box" }, "Hello");
// Membuat element tanpa kamu perlu tahu detail implementasinya
// Middleware Pattern — Express.js
app.use(cors());
app.use(authMiddleware);
// Request diproses melewati rantai fungsi
3 kategori design pattern:
- Creational — cara membuat object (Factory, Singleton, Builder)
- Structural — cara menyusun object (Decorator, Adapter, Facade)
- Behavioral — cara object berkomunikasi (Observer, Strategy, Mediator)
Prinsip Penting
- Pattern bukan peluru ajaib — jangan dipaksakan
- Pahami masalah dulu, baru cari pattern yang cocok
- Kode sederhana tanpa pattern lebih baik dari kode rumit dengan pattern yang tidak perlu
- Di JavaScript, banyak pattern jauh lebih sederhana dari versi Java/C++
Di seri ini, kita akan belajar pattern yang benar-benar berguna di dunia JavaScript modern — bukan teori akademis, tapi pola yang kamu temui di React, Express, Redux, dan library populer lainnya.
🎭 Analogi sehari-hari
Design pattern = resep masakan turun-temurun. Lo gak bikin nasi goreng dari first principle ("apa yang harus dicampur?"). Ada resep standar: tumis bawang, masuk telur, masuk nasi, kasih kecap. Setiap koki bisa ada twist sendiri, tapi pola dasarnya sama. Pattern sama: pemain code yang berpengalaman bagi resep-nya, koki muda gak perlu reinvent.
⚠️ Jebakan yang sering ditemui
- Pattern overuse = Pattern Disease — semua kode dipaksa pake pattern, padahal cukup function biasa
- Hafalin pattern dari buku tapi gak paham masalahnya = pattern tanpa konteks = useless
- GoF pattern strict di JavaScript — banyak gak relevan (Singleton di JS = ES module). Adaptasi ke bahasa
- "Best practice" tapi over-engineered — kode 5 baris diabstraksi jadi 50 baris dengan pattern. Yagni
- Lupa pattern = bahasa komunikasi — sebut "Observer pattern" ke senior dev langsung paham. Sebut "saya pakai event listener" = perlu jelasin lebih panjang
TL;DR: Design pattern = solusi standar untuk masalah recurring di software dev. Bukan copy-paste code — template berpikir. 3 kategori: Creational (bikin object), Structural (susun object), Behavioral (komunikasi). Banyak pattern di JS sudah hidden di framework (React = Observer, Redux = Singleton). Pelajari untuk paham WHY + jadi bahasa komunikasi tim, bukan untuk dipaksakan.