Pola jembatan memisahkan bagian abstrak dari bagian implementasi, sehingga keduanya dapat diubah secara mandiri dan dapat bekerja secara harmonis bersama. Baik bagian abstrak dan bagian implementasi dapat diubah secara independen tanpa saling mempengaruhi, mengurangi kopling kode dan meningkatkan skalabilitas kode.
Menurut definisi GOF, peran mode jembatan adalah untuk "mengisolasi abstraksi dari implementasinya sehingga keduanya dapat berubah secara mandiri." Pola ini sangat bermanfaat bagi pemrograman yang digerakkan oleh peristiwa yang umum di JavaScript.
Salah satu aplikasi mode jembatan yang paling umum dan praktis adalah fungsi callback pendengar acara. Contoh: Pendengar acara, merangkum pernyataan yang diproses acara ke dalam fungsi panggilan balik, dan memprogramnya melalui antarmuka daripada implementasi.
Dasar teori
Definisi pola jembatan: Bagian abstrak terpisah dari bagian implementasinya sehingga mereka semua dapat diubah secara mandiri.
Mode jembatan terutama terdiri dari 4 peran:
(1) Kelas abstrak
(2) Perluas kelas abstrak
(3) mengimplementasikan antarmuka kelas
(4) kelas implementasi spesifik
Menurut karakteristik bahasa JavaScript, kami menyederhanakannya menjadi 2 peran:
(1) Perluas kelas abstrak
(2) kelas implementasi spesifik
Bagaimana cara memahami mode jembatan? Mari memberi contoh selanjutnya
Implementasi Mode Jembatan
Kunci untuk memahami gagasan pola jembatan adalah memahami gagasannya memisahkan bagian -bagian abstrak dan mewujudkan bagian -bagiannya. Mari kita berikan contoh untuk diilustrasikan
Mode jembatan termudah
Faktanya, setiap fungsi yang paling sering kami gunakan adalah mode jembatan yang khas. Kami mensimulasikannya sebagai berikut:
var masing -masing = fungsi (arr, fn) {for (var i = 0; i <arr.length; i ++) {var val = arr [i]; if (fn.call (val, i, val, arr)) {return false; }}} var arr = [1, 2, 3, 4]; masing -masing (arr, fungsi (i, v) {arr [i] = v * 2;})Dalam contoh ini, kami mengulang array ARR melalui setiap fungsi. Meskipun contoh ini sangat umum, ini berisi pola jembatan yang khas.
Dalam contoh ini, bagian abstrak adalah setiap fungsi, yang merupakan kelas abstrak yang diperluas yang disebutkan di atas, dan bagian implementasi adalah FN, yaitu kelas implementasi konkret. Bagian abstrak dan bagian implementasi dapat diubah secara mandiri. Meskipun contoh ini sederhana, ini adalah aplikasi khas mode jembatan.
Mode jembatan dalam pengembangan plug-in
Salah satu skenario yang cocok untuk mode jembatan adalah pengembangan komponen. Untuk beradaptasi dengan berbagai kesempatan, komponen akan memiliki banyak perubahan dalam dimensi yang berbeda. Mode jembatan dapat diterapkan di sini, memisahkan abstraknya dari implementasi, membuat komponen lebih dapat diperluas.
Misalkan kita ingin mengembangkan plug-in pop-up, yang memiliki berbagai jenis pop-up: pengingat pesan biasa, pengingat kesalahan, dan metode tampilan dari setiap pengingat berbeda. Ini adalah skenario perubahan multi-dimensi yang khas. Pertama kami mendefinisikan dua kelas: jendela pop-up pesan normal dan jendela pop-up pesan kesalahan.
function messageDialog (animasi) {this.animation = animation;} messagedialog.prototype.show = function () {this.animation.show ();} function errordialog (animasi) {this.animation = animation;} errordialog.prototype.show = () {) {) {) {) {) {) {) {) {) {) {) {) {) {) {) {) {) {) {) {) {) {) {) {) {) {) {) {) {) {) {) {) {) {) {) {) {) {) {) ()Kedua kelas ini adalah bagian abstrak yang disebutkan di atas, yaitu kelas abstrak yang diperluas, yang keduanya berisi animasi anggota.
Dua jendela pop-up ditampilkan melalui metode acara, tetapi efek animasinya berbeda. Kami mendefinisikan dua kelas efek tampilan sebagai berikut:
function lineranimation () {} lineranimation.prototype.show = function () {console.log ("Ini liner");} function easeanimation () {} easeanimation.prototype.show = function () {console.log ("itu mudah");}Kedua kelas ini adalah kelas implementasi spesifik, yang mencapai efek tampilan spesifik. Jadi bagaimana kita menyebutnya?
var message = new MessageDialog (lineranimation baru ()); message.show (); var error = new errordialog (easeanimation baru ()); error.show ();
Jika kita ingin menambahkan efek animasi, kita dapat mendefinisikan kelas efek lain dan meneruskannya.
Meringkaskan
Kunci untuk mempelajari model jembatan adalah memahami pemisahan antara bagian abstrak dan bagian implementasi, sehingga keduanya dapat diubah secara mandiri tanpa terobsesi dengan bentuk. Plug-in JS memiliki perubahan yang fleksibel dan berbagai skenario yang berlaku sangat cocok untuk menggunakan model ini untuk dicapai. Hal terpenting tentang penggunaan mode jembatan adalah dengan mengetahui dimensi perubahan yang berbeda dalam sistem.
(1) Keuntungan dari mode jembatan:
Mengisolasi abstraksi dari implementasi membantu mengelola berbagai komponen perangkat lunak secara mandiri.
(2) Kekurangan Mode Jembatan:
Setiap elemen jembatan digunakan untuk menambahkan panggilan fungsi, yang memiliki dampak negatif pada kinerja aplikasi. Meningkatkan kompleksitas sistem. Jika fungsi jembatan digunakan untuk menghubungkan dua fungsi, dan salah satu fungsi tidak akan dipanggil di luar fungsi jembatan sama sekali, maka fungsi jembatan tidak diperlukan saat ini.
Mode jembatan "mengisolasi abstraksi dari implementasi sehingga keduanya berubah secara mandiri." Ini dapat mempromosikan modularitas kode, mengarah pada implementasi yang lebih bersih dan meningkatkan fleksibilitas abstrak. Ini dapat digunakan untuk menghubungkan satu set kelas dan fungsi, dan menyediakan cara untuk mengakses data pribadi dengan fungsi istimewa.