Kapan Pakai Pattern Apa — Design Patterns

Mengetahui design pattern itu bagus. Tapi yang lebih penting adalah tahu kapan menggunakannya — dan kapan tidak perlu. Panduan cepat — pilih pattern berdasarkan

Mengetahui design pattern itu bagus. Tapi yang lebih penting adalah tahu kapan menggunakannya — dan kapan tidak perlu.

Panduan cepat — pilih pattern berdasarkan masalah:

Masalah Pattern Contoh
Perlu encapsulation / organisasi kode Module ES Modules, custom hooks
Satu perubahan harus memberi tahu banyak tempat Observer Event listeners, useState
Hanya boleh ada 1 instance Singleton Config, DB connection, Store
Pembuatan object yang kompleks/bervariasi Factory createElement, createServer
Behavior yang bisa ditukar saat runtime Strategy Sorting, validation, pricing
Menambah fitur tanpa mengubah kode asli Decorator Logging, caching, retry
Request diproses berurutan oleh banyak handler Middleware Express, Redux middleware
Komunikasi loose coupling antar module Pub/Sub Event bus, WebSocket
Pisahkan data, logic, tampilan MVC/MVVM React + hooks, Express
Abstraksi akses data Repository TanStack Query, Eloquent

Red flags — tanda kamu over-engineering:

// BURUK: Singleton untuk hal yang tidak perlu singleton
class StringUtilsSingleton {
  static instance = null;
  static getInstance() {
    if (!this.instance) this.instance = new StringUtilsSingleton();
    return this.instance;
  }
  capitalize(str) { return str[0].toUpperCase() + str.slice(1); }
}

// BAIK: Cukup fungsi biasa!
function capitalize(str) {
  return str[0].toUpperCase() + str.slice(1);
}
// BURUK: Factory untuk 1 tipe
class ButtonFactory {
  create() { return { type: "button", text: "Click" }; }
}

// BAIK: Langsung buat object
const button = { type: "button", text: "Click" };

Prinsip memilih pattern:

  1. YAGNI (You Aren't Gonna Need It) — jangan pakai pattern "jaga-jaga"
  2. Start simple, refactor later — mulai dengan kode sederhana, tambah pattern saat complexity muncul
  3. Satu pattern per masalah — jangan stack pattern yang tidak perlu
  4. Baca kode framework — lihat pattern apa yang dipakai React, Express, dll

Workflow yang disarankan:

1. Tulis kode sederhana yang bekerja
2. Identifikasi pain point (duplikasi, coupling, complexity)
3. Pilih pattern yang menyelesaikan pain point spesifik
4. Refactor secara bertahap
5. Review — apakah kode jadi lebih mudah dipahami?

Pattern yang paling sering dipakai di JavaScript modern:

  1. Module — setiap hari, setiap project
  2. Observer — React, event handling, real-time features
  3. Strategy — validation, pricing, sorting, formatting
  4. Middleware — Express, API calls, data pipeline
  5. Factory — saat butuh create banyak variant object

Ingat: Pattern adalah alat, bukan tujuan. Kode yang mudah dibaca dan di-maintain lebih berharga dari kode yang "menggunakan banyak pattern". Gunakan pattern saat mereka membuat kode lebih sederhana, bukan lebih rumit.