Pendahuluan

Merujuk kembali kepada artikel tentang Apa itu Design Pattern,

Maka Design Pattern adalah kerangka/pola desain solusi umum untuk permasalahan rumit yang sering ditemui di sebuah aplikasi.


Apakah berguna ?

Tentu saja berguna.

Setiap yang terstruktur dan mempunyai pola tentu saja berguna. Apalagi kalau struktur dan polanya sederhana.

Setiap yang terstruktur dan berpola sederhana biasanya :

  • Mudah dipahami.
  • Sehingga mudah dioptimisasi.
  • Sehingga mudah dikembangkan, dimodifikasi.

Wajar saja, otak manusia adalah otak yang berfikir kognitif. Belajar secara bertahap dengan melibatkan pengetahuan sebelumnya, logika, dan sensoriknya.

Sebuah pola akan mudah dipahami ketika kita telah mengenalnya sebelumnya atau ketika pola atau struktur nya sederhana. Sesuatu yang sudah ada di memori otak kita. Sebagian orang menyebutnya sebagai pola natural.

Ketika sebuah pola tidak sederhana lagi, maka ada istilah brain overloaded, dimana terlalu banyak informasi yang harus disimpan atau diproses di otak manusia untuk menafsirkan dan memahami sebuah pola.

Design Pattern berupaya membuat sebuah pola rumit menjadi sederhana, dengan cara yang elegan.

Alasan ini secara natural cukup membuat Design Pattern pantas disebut berguna.


Design Pattern di dunia Software engineering

Apalah lagi di dunia Software Engineering,

dimana di bidang ilmu ini biasanya memetakan antara kejadian rumit di dunia nyata yang non/semi-deterministic (yang bisa mempunyai beragam cabang kasus) ke dalam sebuah desain perangkat lunak yang deterministic (mesti jelas terdefinisi apa saja kasus yang dipilih untuk diselesaikan).

Mau tak mau harus dibuat pola yang jelas struktur dan prosesnya ketika memetakannya.

Memetakannya pertama kali pasti dengan cara yang sederhana pula.

Biasanya melalui proses prosedural. Menelusuri satu persatu, lalu menempatkan logika di tiap kasus. Diulang-ulang sehingga semua pilihan kasus yang ingin diselesaikan terpenuhi kasusnya.

Awalnya proses sederhana yang menghasilkan pola yang sederhana.

Tetapi memetakan kasus non/semi-deterministic/rumit di dunia nyata sesuai dengan proses prosedural secara berulang-ulang bisa berakhir dengan pola yang rumit di perangkat lunak yang kita desain/buat.

Awalnya pola solusinya sederhana, tetapi karena ditambahkan kondisi baru, dan dilakukan berulang-ulang, maka perlahan-lahan solusi kita menjadi pola yang rumit.

Design Pattern merupakan tingkat lanjutan untuk membuat pola kasus non/semi-deterministik/rumit tersebut tetap sederhana di perangkat lunak yang kita desain/buat./

Banyak yang bilang design pattern tidak berguna ?

Umumnya hampir semua bahasa pemrograman dan sistem yang besar dibuat dengan memakai Design Pattern.

Walaupun mungkin saja Design Pattern yang dipakai sudah terbungkus dalam library, fungsi, atau framework yang kita pakai.

Tidaklah mungkin pengembang perangkat lunak yang terkenal-terkenal itu membuat sesuatu dengan konsep yang mereka anggap tidak berguna.

Itu agak tidak masuk akal..


Tetapi kenapa ada yang bilang begitu ?

Di setiap konsep tentu saja tidak selalu sempurna dalam implementasinya.

Permasalahannya adalah seberapa cocok sebuah implementasi Design Pattern diterapkan di kasus tertentu.

Setiap desain Design Pattern tentunya harus sesuai dengan kontek/pola kasusnya.

Kalau tidak sesuai maka muncullah nama Anti Pattern.

Hal ini karena seorang Software Engineer belum bisa mencocokkan Design Pattern yang tepat untuk kasus tertentu.

Oleh karenanya perlu mentoring dan studi kasus ketika seorang Software Engineer pemula mencoba mengimplementasikan Design Pattern yang cocok.


Design Pattern terlalu Over Engineering ?

Ada yang bilang terlalu over engineering ketika menggunakan Design Pattern.

Tergantung kondisinya.

Kalau memang kasusnya sederhana dan kasus/fitur nya tidak akan berkembang lagi, maka dengan code yang lama dan pendekatan prosedural juga sudah cukup.

Tetapi kalau sudah cukup rumit dan code/fitur nya akan terus berkembang, maka tidak ada pilihan lain selain pakai Design Pattern.

Atau desain lah pakai cara sendiri yang dianggap memudahkan dalam mengembangkan produk atau fitur ini dikemudian hari.


Kesimpulan

Sekali lagi, Desain Pattern adalah solusi sederhana yang elegan.

Tetapa banyak juga solusi lain yang bisa jadi sederhana, atau biasa-biasa saja, dan fitur aplikasi tetap saja berjalan dengan baik.

Tidak masalah, namanya juga mencoba menyelesaikan permasalahan dunia nyata dengan bantuan aplikasi perangkat lunak.

Soal selera dan pemilihan solusi tidak perlu dipertentangkan. Selama bisa menyelesaikan persoalan yang ada dan memudahkan bagi yang mengembangkannya, maka teruskan dan pakai saja.

Gitu aja kok repot.!