𝗕𝗲𝗵𝗮𝘃𝗶𝗼𝗿𝗮𝗹 𝗗𝗲𝘀𝗶𝗴𝗻 𝗣𝗮𝘁𝘁𝗲𝗿𝗻𝘀 𝟮𝟬𝟮𝟲
Anda tahu cara membangun objek. Anda tahu cara mengaturnya. Sekarang Anda harus belajar bagaimana mereka berkomunikasi satu sama lain.
Pola perilaku (behavioral patterns) menjawab pertanyaan tersulit dalam perangkat lunak: Bagaimana seharusnya objek-objek saling berkolaborasi?
Desain yang buruk menyebabkan:
- Objek yang terikat erat (tightly coupled) sehingga mudah rusak.
- Manajemen status (state management) yang tersebar.
- Blok kondisional masif yang sulit diuji.
- Penanganan event yang kacau.
Pengembang senior menggunakan pola perilaku untuk mengelola komunikasi. Berikut adalah pola-pola terpenting yang Anda butuhkan untuk tahap produksi.
𝗦𝘁𝗿𝗮𝘁𝗲𝗴𝘆 Gunakan ini saat Anda memiliki berbagai cara untuk melakukan suatu tugas. Alih-alih menggunakan blok if-else raksasa untuk metode pembayaran yang berbeda, buatlah kelas terpisah untuk masing-masing metode. Ini membuat kode Anda mudah diperluas.
𝗢𝗯𝘀𝗲𝗿𝘃𝗲𝗿 Gunakan ini untuk sistem berbasis event (event-driven). Ketika satu objek berubah, semua ketergantungannya akan diberitahu secara otomatis. Bayangkan seperti ticker saham atau notifikasi media sosial.
𝗖𝗼𝗺𝗺𝗮𝗻𝗱 Ubah permintaan menjadi objek mandiri. Inilah cara Anda membangun fitur undo/redo atau antrean tugas. Setiap aksi mengetahui cara mengeksekusi dan membatalkan dirinya sendiri.
𝗦𝘁𝗮𝘁𝗲 Gunakan ini untuk mengelola alur kerja yang kompleks. Alih-alih memeriksa variabel status di mana-mana, jadikan setiap status sebagai sebuah kelas. Ini bekerja dengan sempurna untuk pemrosesan pesanan atau lampu lalu lintas.
𝗧𝗲𝗺𝗽𝗹𝗮𝘁𝗲 𝗠𝗲𝘁𝗵𝗼𝗱 Tentukan kerangka algoritma dalam kelas dasar (base class). Biarkan subclass mengisi langkah-langkah spesifiknya. Ini mengurangi duplikasi kode dalam pipeline pemrosesan data.
𝗖𝗵𝗮𝗶𝗻 𝗼𝗳 𝗥𝗲𝘀𝗽𝗼𝗻𝘀𝗶𝗯𝗶𝗹𝗶𝘁𝘆 Teruskan permintaan melalui rantai handler. Setiap handler memutuskan apakah ia dapat menyelesaikan masalah tersebut atau harus meneruskannya ke orang berikutnya. Ini umum digunakan dalam middleware dan sistem tiket dukungan.
𝗜𝘁𝗲𝗿𝗮𝘁𝗼𝗿 Akses elemen dalam sebuah koleksi tanpa memperlihatkan cara kerja koleksi tersebut. Ini menyembunyikan struktur internal data Anda.
𝗠𝗲𝗱𝗶𝗮𝘁𝗼𝗿 Sentralisasi komunikasi. Alih-alih objek berbicara kepada semua orang, mereka berbicara kepada satu koordinator. Ini mencegah kekacauan koneksi.
𝗠𝗲𝗺𝗲𝗻𝘁𝗼 Tangkap status suatu objek sehingga Anda dapat memulihkannya nanti. Gunakan ini untuk snapshot dan rollback.
𝗩𝗶𝘀𝗶𝘁𝗼𝗿 Tambahkan operasi baru ke struktur yang stabil tanpa mengubah objek itu sendiri. Ini berguna untuk pelaporan atau sistem file yang kompleks.
𝗜𝗻𝘁𝗲𝗿𝗽𝗿𝗲𝘁𝗲𝗿 Bangun bahasa mini untuk aplikasi Anda. Gunakan ini untuk mesin aturan (rule engines) atau kueri pencarian khusus.
Aturan Emas: Buat interaksi objek menjadi eksplisit. Jangan sembunyikan perilaku di dalam kondisional yang kompleks.