Kadang -kadang selama proses pengembangan, kami akan menemukan bahwa antarmuka yang diperlukan oleh klien dan antarmuka yang disediakan tidak kompatibel. Kami tidak dapat memodifikasi antarmuka klien karena alasan khusus. Dalam hal ini, kita perlu beradaptasi dengan antarmuka yang ada dan kelas yang tidak kompatibel, yang membutuhkan mode adaptor. Dengan adaptor, kita dapat menggunakannya tanpa memodifikasi kode lama, yang merupakan kemampuan adaptor.
Mode adaptasi dapat digunakan untuk beradaptasi antara antarmuka yang ada dan kelas yang tidak kompatibel. Objek yang menggunakan mode ini juga disebut pembungkus karena mereka membungkus objek lain dengan antarmuka baru.
Di permukaan, mode adaptor sangat mirip dengan mode penampilan. Mereka semua perlu membungkus objek lain dan mengubah antarmuka yang mereka render. Perbedaan antara keduanya adalah bagaimana mereka mengubah antarmuka. Elemen penampilan menyajikan antarmuka yang disederhanakan yang tidak memberikan opsi tambahan, dan kadang -kadang membuat beberapa asumsi untuk memfasilitasi tugas umum. Adaptor mengubah satu antarmuka ke antarmuka lainnya, yang tidak akan menyaring kemampuan tertentu dan tidak akan menyederhanakan antarmuka. Jika API sistem klien tidak tersedia, diperlukan adaptor.
Dasar teori
Mode Adaptor: Konversi antarmuka menjadi antarmuka yang diperlukan oleh klien tanpa memodifikasi kode klien, sehingga kode yang tidak kompatibel dapat bekerja bersama.
Adaptor ini terutama terdiri dari 3 peran:
(1) Klien: Kelas yang memanggil antarmuka
(2) Adaptor: Kelas yang digunakan untuk menghubungkan antarmuka klien dan antarmuka menyediakan layanan
(3) Adaptor: Menyediakan layanan, tetapi tidak sesuai dengan persyaratan antarmuka klien.
Implementasi mode adaptor
1. Adaptor termudah
Mode adaptor tidak rumit seperti yang Anda pikirkan, jadi mari kita beri Anda contoh paling sederhana.
Klien memanggil metode untuk perhitungan tambahan:
var result = add (1,2);
Namun, kami tidak memberikan metode ADD, dan memberikan metode SUM dengan fungsi yang sama:
Fungsi jumlah (v1, v2) {return v1 + v2;}Untuk menghindari memodifikasi klien dan server, kami menambahkan fungsi pembungkus:
fungsi add (v1, v2) {reutrn sum (v1, v2);}Ini adalah mode adaptor paling sederhana, kami menambahkan metode pembungkus antara dua antarmuka yang tidak kompatibel, dan menggunakan metode ini untuk menghubungkan keduanya untuk membuatnya bekerja bersama.
2. Aplikasi Praktis
Dengan pengembangan kerangka kerja front-end, semakin banyak pengembang telah mulai menggunakan kerangka kerja MVVM untuk pengembangan, hanya perlu memanipulasi data tanpa elemen DOM, dan jQuery memiliki efek yang semakin sedikit. Banyak proyek masih merujuk ke kelas alat perpustakaan jQuery, karena kita perlu menggunakan AJAX yang disediakan oleh jQuery untuk meminta data ke server. Jika peran JQuery dalam proyek ini hanya digunakan sebagai Perpustakaan Alat AJAX, rasanya seperti itu seperti membunuh ayam dan menyebabkan pemborosan sumber daya. Pada saat ini, kita dapat sepenuhnya merangkum perpustakaan AJAX kita sendiri.
Misalkan AJAX yang kami selerkirkan digunakan melalui fungsi:
AJAX ({url: '/getData', type: 'Post', DataType: 'json', data: {id: "123"}). Done (function () {}))Kecuali untuk perbedaan antara Calling Interface Ajax dan JQuery's $ .AJAX, yang lain persis sama.
Pasti ada banyak tempat dalam proyek yang meminta Ajax. Saat kami mengganti jQuery, kami tidak dapat memodifikasi $. AJAX satu per satu. Apa yang harus kita lakukan? Saat ini, kita dapat menambahkan adaptor:
var $ = {aJax: function (options) {return ajax (options); }}Ini akan kompatibel dengan kode lama dan antarmuka baru, menghindari modifikasi pada kode yang ada.
Meringkaskan
Prinsip mode adaptor sangat sederhana, yaitu menambahkan kelas pembungkus baru untuk membungkus antarmuka baru untuk beradaptasi dengan panggilan kode lama, dan menghindari memodifikasi antarmuka dan memanggil kode.
Skenario yang berlaku: Ada banyak panggilan kode antarmuka lama. Untuk menghindari memodifikasi kode lama dan mengganti antarmuka baru, skenario aplikasi tidak mempengaruhi metode implementasi yang ada.
1. Acara yang berlaku untuk mode adaptor:
Adaptor cocok untuk situasi di mana antarmuka yang diharapkan oleh sistem pelanggan tidak sesuai dengan yang disediakan oleh API yang ada. Dua metode yang disesuaikan dengan adaptor harus melakukan tugas yang serupa, jika tidak masalahnya tidak akan diselesaikan. Sama seperti elemen jembatan dan elemen penampilan, dengan menciptakan adaptor, abstraksi dapat diisolasi dari implementasinya sehingga keduanya dapat diubah secara mandiri.
2. Manfaat mode adaptor:
Bungkus antarmuka kelas yang sudah ada dengan antarmuka baru sehingga program klien dapat menggunakan kelas ini yang tidak dirancang tanpa operasi besar.
3. Kerugian dari mode orkestrator:
Beberapa orang berpikir bahwa adaptor adalah overhead yang tidak perlu yang dapat dihindari sepenuhnya dengan menulis ulang kode yang ada. Selain itu, mode adaptor juga akan memperkenalkan sejumlah alat baru yang perlu didukung. Jika API yang ada belum dibentuk, atau antarmuka baru belum dibentuk, adaptor mungkin tidak selalu berfungsi.
Keuntungannya cenderung lebih menonjol daripada kerugiannya ketika melibatkan sistem besar dan kerangka kerja warisan.