7 Pola Desain Perangkat Lunak Paling Penting

Untuk mempelajari lebih dalam tentang Pola Desain Perangkat Lunak, lihat Pola Desain Perangkat Lunak: Praktik Terbaik untuk Pengembang, yang dibuat oleh C.H. Afzal, seorang insinyur perangkat lunak veteran dengan pengalaman bertahun-tahun di Netflix, Microsoft, dan Oracle. Banyak di bawah ini diringkas dari kursusnya.

Mengapa Desain Pola?

Pola Desain telah menjadi objek dari beberapa kontroversi di dunia pemrograman akhir-akhir ini, sebagian besar disebabkan oleh persepsi 'penggunaan berlebihan' yang mengarah pada kode yang dapat lebih sulit untuk dipahami dan dikelola.

Sangat penting untuk memahami bahwa Pola Desain tidak pernah dimaksudkan untuk diretas bersama pintasan untuk diterapkan secara serampangan, 'cara satu ukuran untuk semua' ke kode Anda. Pada akhirnya tidak ada pengganti untuk kemampuan pemecahan masalah asli dalam rekayasa perangkat lunak.

Namun faktanya tetap, bahwa Pola Desain dapat sangat berguna jika digunakan dalam situasi yang tepat dan untuk alasan yang tepat. Ketika digunakan secara strategis, mereka dapat membuat programmer secara signifikan lebih efisien dengan memungkinkan mereka untuk menghindari menciptakan kembali roda pepatah, alih-alih menggunakan metode yang telah disempurnakan oleh orang lain. Mereka juga menyediakan bahasa umum yang berguna untuk mengonseptualisasikan masalah dan solusi berulang ketika berdiskusi dengan orang lain atau mengelola kode dalam tim yang lebih besar.

Yang sedang berkata, peringatan penting adalah untuk memastikan bahwa bagaimana dan mengapa di balik masing-masing pola juga dipahami oleh pengembang.

Tanpa basa-basi lagi (dalam urutan kepentingan umum, dari yang paling sedikit):

Pola Desain Yang Paling Penting

  1. Singleton

Pola singleton digunakan untuk membatasi pembuatan kelas hanya untuk satu objek. Ini bermanfaat ketika satu (dan hanya satu) objek diperlukan untuk mengoordinasikan tindakan di seluruh sistem. Ada beberapa contoh di mana hanya satu instance kelas harus ada, termasuk cache, kolam utas, dan pendaftar.

Itu sepele untuk menginisialisasi objek kelas - tetapi bagaimana kita memastikan bahwa hanya satu objek yang pernah dibuat? Jawabannya adalah membuat konstruktor 'pribadi' ke kelas yang ingin kita definisikan sebagai singleton. Dengan begitu, hanya anggota kelas yang dapat mengakses konstruktor pribadi dan tidak ada orang lain.

Pertimbangan penting: Dimungkinkan untuk mensubklasifikasikan singleton dengan membuat konstruktor dilindungi dan bukan pribadi. Ini mungkin cocok dalam beberapa keadaan. Salah satu pendekatan yang diambil dalam skenario ini adalah membuat daftar lajang dari subclass dan metode getInstance dapat mengambil dalam parameter atau menggunakan variabel lingkungan untuk mengembalikan singleton yang diinginkan. Registri kemudian memelihara pemetaan nama string ke objek tunggal, yang dapat diakses sesuai kebutuhan.

2. Metode Pabrik

Pabrik normal menghasilkan barang; pabrik perangkat lunak menghasilkan objek. Dan bukan hanya itu - ia melakukannya tanpa menentukan kelas yang tepat dari objek yang akan dibuat. Untuk mencapai ini, objek dibuat dengan memanggil metode pabrik alih-alih memanggil konstruktor.

Biasanya, pembuatan objek di Jawa berlangsung seperti:

SomeClass someClassObject = SomeClass baru ();

Masalah dengan pendekatan di atas adalah bahwa kode yang menggunakan objek SomeClass, tiba-tiba sekarang menjadi tergantung pada implementasi konkret SomeClass. Tidak ada yang salah dengan menggunakan yang baru untuk membuat objek, tetapi ia datang dengan beban yang menyatukan kode kita dengan kelas implementasi konkret, yang kadang-kadang bisa menjadi masalah.

3. Strategi

Pola strategi memungkinkan pengelompokan algoritma terkait di bawah abstraksi, yang memungkinkan pengalihan satu algoritma atau kebijakan untuk yang lain tanpa memodifikasi klien. Alih-alih langsung menerapkan algoritma tunggal, kode menerima instruksi runtime yang menentukan kelompok algoritma mana yang akan dijalankan.

4. Pengamat

Pola ini adalah ketergantungan satu-ke-banyak antara objek sehingga ketika satu objek berubah keadaan, semua tanggungannya diberitahu. Ini biasanya dilakukan dengan memanggil salah satu metode mereka.

Demi kesederhanaan, pikirkan apa yang terjadi ketika Anda mengikuti seseorang di Twitter. Anda pada dasarnya meminta Twitter untuk mengirimi Anda (pengamat) tweet pembaruan dari orang (subjek) yang Anda ikuti. Pola tersebut terdiri dari dua aktor, pengamat yang tertarik dengan pembaruan dan subjek yang menghasilkan pembaruan.

Subjek dapat memiliki banyak pengamat dan hubungan satu ke banyak. Namun, seorang pengamat bebas berlangganan pembaruan dari mata pelajaran lain juga. Anda dapat berlangganan feed berita dari halaman Facebook, yang akan menjadi subjek dan setiap kali halaman memiliki posting baru, pelanggan akan melihat posting baru.

Pertimbangan utama: Dalam kasus banyak subjek dan beberapa pengamat, jika setiap subjek menyimpan pengamatnya secara terpisah, itu akan meningkatkan biaya penyimpanan karena beberapa subjek akan menyimpan pengamat yang sama beberapa kali.

5. Pembangun

Seperti namanya, pola pembangun digunakan untuk membangun objek. Kadang-kadang, objek yang kita buat bisa kompleks, terdiri dari beberapa sub-objek atau memerlukan proses konstruksi yang rumit. Latihan menciptakan tipe kompleks dapat disederhanakan dengan menggunakan pola pembangun. Objek komposit atau agregat adalah apa yang umumnya dibangun oleh seorang pembangun.

Pertimbangan utama: Pola pembangun mungkin tampak mirip dengan pola 'pabrik abstrak' tetapi satu perbedaannya adalah bahwa pola pembangun menciptakan objek langkah demi langkah sedangkan pola pabrik abstrak mengembalikan objek dalam sekali jalan.

6. Adaptor

Ini memungkinkan kelas yang tidak kompatibel untuk bekerja bersama dengan mengubah antarmuka satu kelas ke kelas lainnya. Anggap saja sebagai semacam penerjemah: ketika dua kepala negara yang tidak berbicara bahasa umum bertemu, biasanya seorang penerjemah duduk di antara keduanya dan menerjemahkan percakapan, sehingga memungkinkan komunikasi.

Jika Anda memiliki dua aplikasi, dengan satu meludahkan output sebagai XML dengan yang lainnya membutuhkan input JSON, maka Anda akan memerlukan adaptor di antara keduanya untuk membuatnya berfungsi dengan mulus.

7. Nyatakan

Pola keadaan merangkum berbagai keadaan mesin dapat berada di, dan memungkinkan objek untuk mengubah perilakunya ketika keadaan internal berubah. Mesin atau konteksnya, sebagaimana disebut dalam pola-bicara, dapat mengambil tindakan yang mendorongnya ke berbagai kondisi. Tanpa menggunakan pola, kode menjadi tidak fleksibel dan dikotori dengan kondisi if-else.

Ingin terus belajar?

Dengan Pola Desain Perangkat Lunak: Praktik Terbaik untuk Pengembang, Anda akan memiliki kesempatan untuk melakukan lebih dari sekadar membaca teorinya. Anda akan dapat menyelam jauh ke dalam masalah nyata dan memahami solusi praktis dengan contoh kode kehidupan nyata.

Kursus ini didasarkan pada buku populer oleh Gang of Four, tetapi disajikan dalam format interaktif, mudah dicerna. Anda akan menguasai 23 pola desain terkenal dari buku ini secara interaktif, mempelajari aplikasi yang tepat dari 3 tipe pola desain utama (kreatif, struktural, dan perilaku), dan belajar menggabungkan pola desain ini ke dalam proyek Anda sendiri.

Lihat sekarang.

Awalnya diterbitkan di blog.educative.io pada 7 November 2018.