Dengan Javascript muncul sebagai bahasa pemrograman di mana-mana dari web selama beberapa tahun ke depan, kerangka kerja baru muncul setiap lima menit dan pemrograman yang digerakkan oleh acara yang memimpin baik sisi server maupun klien:
Apakah Anda sebagai pengembang Javascript menganggap Pola Desain tradisional sebagai hal penting atau kurang penting dibandingkan dengan bahasa / lingkungan lain?
Harap sebutkan tiga pola desain teratas yang Anda, sebagai pengembang Javascript gunakan secara teratur dan berikan contoh bagaimana mereka telah membantu dalam pengembangan Javascript Anda.
Jawaban:
Pola desain klasik tidak berlaku untuk JavaScript.
Apa yang berlaku adalah menulis kode modular dan fungsional.
Anda harus menggunakan campuran Konstruktor dan fungsi kelas satu.
Sebagai pengembang JavaScript, saya pribadi mendorong untuk memperlakukan JavaScript sebagai LISP daripada Java. Jadi cobalah untuk meniru kode gaya fungsional tingkat tinggi daripada mencoba meniru kode OOP klasik.
Sekali lagi pola desain tidak benar-benar berlaku banyak tetapi di bawah ini adalah tiga konstruksi penting.
new
Silakan tinggalkan beberapa jenis konteks di mana saya dapat menunjukkan contoh teknik semacam ini dibandingkan dengan melakukan jenis kode yang sama menggunakan pola desain tradisional.
Mari kita lihat beberapa Pola Desain klasik dan bagaimana menerapkannya dalam js serta pola alternatif yang lebih cocok untuk js itu sendiri:
Pola Pengamat:
Dalam
node.js
hal ini sederhana sajaevents.EventEmitter
. DalamjQuery
hal ini adalah$.fn.bind
&&$.fn.trigger
. Dalambackbone
hal iniBackbone.Events.trigger
danBackbone.Events.bind
. Ini adalah pola yang sangat umum digunakan dalam kode sehari-hari.Saya tidak pernah berhenti dan berpikir, "Hei, saya menggunakan pola pengamat di sini!". Tidak, ini hanya cara tingkat rendah untuk menyampaikan pesan atau cara untuk mengubah perubahan.
Sebagai contoh di backbone, semua tampilan MVC berikatan dengan
onchange
acara model sehingga mengubah model membuat perubahan apa pun secara otomatis ke tampilan. Ya ini adalah pola yang kuat, tetapi penggunaannya sangat umum dalam pemrograman berbasis acara yang tidak disadari menggunakannya di mana-mana.Dalam
WebSocket
prototcol yang kami miliki.on
yang kami gunakan untuk mengikaton("message", ...
acara. Sekali lagi ini sangat umum tetapi ini adalah pengamat pada aliran daripada OOP klasik Andawhile (byte b = Stream.ReadNextByte())
.Ini semua adalah penggunaan kuat dari pola Pengamat. Tetapi ini bukan pola yang Anda gunakan. Ini adalah bagian sederhana dari bahasa ini. Ini hanya kode.
Pola Memento:
Ini hanyalah JSON. Hal ini memungkinkan Anda untuk mengelompokkan status suatu objek sehingga Anda dapat membatalkan tindakan.
Dalam JavaScript, kami mendukung API untuk kenang-kenangan. Cukup tentukan metode yang dipanggil
toJSON
pada objek apa pun. Ketika Anda memanggilnyaJSON.stringify
akan secara internal memanggil.toJSON
objek Anda untuk mendapatkan data nyata yang ingin Anda serialkan ke JSON.Ini memungkinkan Anda untuk membuat snapshot dari kode Anda secara sepele.
Sekali lagi saya tidak menyadari ini pola kenang-kenangan. Ini hanya menggunakan alat serialisasi yaitu JSON.
Pola Negara / Pola Strategi:
Anda tidak perlu pola keadaan. Anda memiliki fungsi kelas satu dan tipe dinamis. Cukup menyuntikkan fungsi atau mengubah properti dengan cepat.
sumber
Ambil jawaban ini sebagai pendapat subyektif.
Jika yang Anda maksud pola desain tradisional seperti Gang of Four , maka sebagian besar tekniknya adalah bahasa / platform agnostik seperti "Program ke antarmuka, bukan implementasi" atau "Komposisi objek objek atas warisan kelas" dan sama pentingnya juga bagi pengembang JavaScript.
Pola yang lebih spesifik seperti kreasi, struktural dan perilaku mungkin atau tidak perlu digunakan dengan cara yang sama atau sesering dalam bahasa lain karena fitur bahasa dapat memengaruhi penggunaannya secara luas. Karena itu, beberapa bahasa (termasuk JavaScript) memiliki pola desain sendiri berdasarkan fungsionalitas atau gula sintaksis yang mereka tawarkan.
Secara umum saya akan mengatakan bahwa pola desain tradisional sama pentingnya dengan mereka dalam bahasa lain, tetapi pola spesifik JavaScript lebih penting daripada yang tradisional.
Di antara Pola Desain Esensial JavaScript saya sebagian besar menggunakan ini:
1. Pola konstruktor (Dengan Prototipe)
Terutama di sisi server ketika menulis hal-hal node.js, karena itu sangat cocok untuk menulis modul meskipun tidak memiliki enkapsulasi asli. Juga populer untuk banyak pengembang lain jika Anda menelusuri repositori di GitHub, jadi keakraban dengan pola ini dapat membantu Anda lebih memahami kode lain.
2. Mengungkap Pola Modul
Menawarkan modularitas dengan enkapsulasi.
3. Pola KERING
Ini agak khusus skenario, meskipun setiap pengembang harus menggunakannya sebanyak (im) mungkin.
sumber
Pola desain diajarkan di kelas desain untuk CS. Mereka tidak penting, tetapi sangat membantu jika Anda dapat menemukan situasi analog untuk memiliki solusi yang telah dipikirkan.
Ini juga memungkinkan programmer untuk berkomunikasi dengan lebih mudah. Anda dapat berbicara dengan rekan kerja Anda dalam hal polanya juga. Jika Anda mengatakan di sini saya memiliki Pengamat saya, maka cukup dipahami apa yang sedang terjadi.
Orang-orang secara alami akan menemukan solusi yang sesuai dengan pola desain sendiri, tetapi pola desain membantu mendefinisikan terminologi dan ide-ide standar yang dapat membantu.
Tidak ada yang super luar biasa tentang polanya, hal terbaik adalah bahwa mereka adalah ide yang dikanonisasi dan didefinisikan dengan cara yang berulang kali berguna.
sumber
Mereka sangat penting.
Ini karena konsep untuk solusi yang dapat digunakan kembali dapat melampaui bahasa. - perubahan sintaksis - perubahan implementasi - Notion for pattern masih ada.
Pengembang dari bahasa apa pun dapat mempelajari JS lanjutan dengan mempelajari pola, bukan sintaksis. Mereka yang tidak tahu ini tidak ada.
Ada pola yang sering digunakan yang beberapa orang akan "membantah". Namun, mereka baik untuk diketahui karena mereka sangat umum dan kuat di JS canggih.
1- Namespace - bungkus kode Anda dalam suatu objek.
var x = (fungsi () {}) ();
2- Konfigurasi Obyek, pola seperti pabrik. -Mass objek ke fungsi, bukan sekelompok vars.
var product = factory ({});
3- Fungsi panggilan balik. - Lulus fungsi sebagai parameter, untuk dipanggil ketika tugas selesai.
function longTask (function () {// panggil saya jika sudah selesai});
Seperti yang saya katakan, beberapa orang mungkin berpendapat bahwa ini bukan pola, tetapi mereka sangat umum dan sangat kuat, dan harus disebutkan karena mereka memang sangat berguna solusi yang dapat digunakan kembali untuk masalah umum. Yang merupakan definisi Pola Desain.
Pertanyaan yang sangat bagus
Semoga itu bisa membantu.
sumber