คำอธิบายโหมดอะแดปเตอร์
หมายเหตุ: โหมดอะแดปเตอร์โดยทั่วไปเป็นกรณีที่อินเทอร์เฟซที่จะใช้ไม่สอดคล้องกับแอปพลิเคชันหรือระบบ แต่จำเป็นต้องมีการแนะนำ
ฉาก: มันเหมือนกับว่าเราซื้อโทรศัพท์มือถือและหลังจากซื้อแล้วเราพบว่าปลั๊กสายเคเบิลชาร์จเป็นปลั๊กสามตัว แต่ที่บ้านมีปลั๊กสองตัวในซ็อกเก็ต เราควรทำอย่างไร? เพื่อความสะดวกและเพื่อให้สามารถเรียกเก็บเงินได้ทุกที่คุณต้องซื้ออะแดปเตอร์ชาร์จสากล เพื่อให้โทรศัพท์สามารถเรียกเก็บเงินได้ที่บ้าน มิฉะนั้นคุณสามารถวางหรือวิ่งไปยังสถานที่ที่มีปลั๊กนี้เพื่อชาร์จ
ในสภาพแวดล้อมการพัฒนาจริงเนื่องจากระบบหรืออินเทอร์เฟซเก่าที่จัดทำโดยแอปพลิเคชันของบุคคลที่สามไม่ตรงกับอินเทอร์เฟซที่กำหนดไว้อินเทอร์เฟซเก่าหรือบุคคลที่สามดังกล่าวไม่สามารถใช้ในสภาพแวดล้อมที่เน้นอินเตอร์เฟส ในเวลานี้เราใช้คลาสอะแดปเตอร์เพื่อสืบทอดคลาสที่จะดัดแปลงและให้คลาสอะแดปเตอร์ใช้อินเทอร์เฟซเพื่อแนะนำอินเทอร์เฟซของระบบเก่าหรือแอปพลิเคชันบุคคลที่สาม
ด้วยวิธีนี้เมื่อใช้การเขียนโปรแกรมอินเตอร์เฟสคุณสามารถใช้คลาสการจับคู่แบบปรับตัวนี้เพื่อเรียกอินเทอร์เฟซทางอ้อมของระบบเก่าหรือแอปพลิเคชันบุคคลที่สาม
ใน JavaScript ในการใช้รหัสคล้ายกับรูปแบบอะแดปเตอร์ของภาษาที่มุ่งเน้นวัตถุแบบไดนามิกคุณสามารถใช้อินสแตนซ์ของต้นแบบที่สืบทอดมาเพื่อนำไปใช้งาน เนื่องจากมันขึ้นอยู่กับข้อ จำกัด ของอินเทอร์เฟซ แต่ JavaScript ไม่มีหมายเลขอินเทอร์เฟซเราจึงลบเลเยอร์อินเตอร์เฟสและใช้เป้าหมายคลาสการใช้งานอินเตอร์เฟสโดยตรงเพื่อจำลองซอร์สโค้ดที่คล้ายกัน
ตัวอย่างซอร์สโค้ด
1. คลาสและวิธีการเชื่อมต่อที่จะปรับ:
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น Adaptee () {
this.name = 'Adaptee';
-
Adaptee.prototype.getName = function () {
ส่งคืนสิ่งนี้ชื่อ;
-
2. คลาสการใช้งานปกติ [เนื่องจากไม่มีอินเทอร์เฟซใน JavaScript คลาสการใช้งานจึงมีให้โดยตรง]
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่นเป้าหมาย () {
this.name = 'เป้าหมาย';
-
target.prototype.QueryName = function () {
ส่งคืนสิ่งนี้ชื่อ;
-
3. คลาสการปรับตัว:
การคัดลอกรหัสมีดังนี้:
ฟังก์ชัน Adapte () {
this.name = '';
-
Adapte.prototype = new Adaptee ();
Adapte.prototype.QueryName = function () {
this.getName ();
-
4. วิธีใช้:
การคัดลอกรหัสมีดังนี้:
var local = new Target ();
local.queryName (); // เรียกคลาสการใช้งานปกติ
var adapte = ใหม่ Adapte ();
Adapte.QueryName (); // เรียกระบบเก่าหรืออินเทอร์เฟซแอปพลิเคชันของบุคคลที่สาม
คำแนะนำอื่น ๆ
ในขั้นตอนที่สี่ข้างต้น VAR Local และ Var Adapte คล้ายกับภาษาที่มุ่งเน้นวัตถุเช่น Java และ C#เช่น:
การคัดลอกรหัสมีดังนี้:
เป้าหมายอินเตอร์เฟส {
สตริงสาธารณะ queryName ();
-
// ตัวชี้อ้างอิงอินเตอร์เฟส
เป้าหมาย local = new Realtarget (); // นั่นคือคลาสการใช้งานเป้าหมายของ JavaScript ด้านบน
local.queryName ();
// อะแดปเตอร์
Target Adapte = ใหม่ Adapte ();
Adapte.QueryName ();
จะเห็นได้ว่าคลาสอะแดปเตอร์เป็นเลเยอร์กลางที่เชื่อมต่ออินเทอร์เฟซกับอินเตอร์เฟสคลาสเป้าหมาย มันถูกใช้เพื่อแก้ปัญหาที่เป้าหมายที่ต้องการมีอยู่แล้ว แต่เราไม่สามารถใช้งานได้โดยตรงและไม่สามารถใช้ร่วมกับนิยามรหัสของเราได้ดังนั้นเราจึงต้องใช้โหมดอะแดปเตอร์ โหมดอะแดปเตอร์เรียกอีกอย่างว่าโหมดการแปลงและโหมดบรรจุภัณฑ์