โหมดอะแดปเตอร์ Java
เมื่อเร็ว ๆ นี้ฉันได้เรียนรู้พื้นฐาน Java และมีข้อสงสัยมากมายเมื่อฉันเรียนรู้อะแดปเตอร์ ฉันค้นหาข้อมูลออนไลน์และพบข้อมูลมากมายเกี่ยวกับอะแดปเตอร์ แต่บทความนี้ดี นี่คือบันทึกคุณสามารถอ่านสิ่งที่คุณต้องการ
รูปแบบอะแดปเตอร์คือการแปลงอินเทอร์เฟซของคลาสหนึ่งเป็นอินเทอร์เฟซอื่นที่ไคลเอนต์คาดหวังเพื่อให้สองคลาสที่อินเทอร์เฟซดั้งเดิมไม่ตรงกันและไม่สามารถทำงานร่วมกันได้สามารถทำงานร่วมกันได้ การพูดตามหน้าที่คลาสที่เข้ากันไม่ได้กับอินเทอร์เฟซเหล่านี้โดยทั่วไปมีฟังก์ชั่นเดียวกันหรือคล้ายกัน โดยปกติแล้วเราจะแก้ปัญหาความไม่ลงรอยกันของอินเทอร์เฟซประเภทนี้โดยการปรับเปลี่ยนอินเทอร์เฟซของคลาสนี้ แต่ถ้าเราไม่เต็มใจที่จะแก้ไขอินเทอร์เฟซดั้งเดิมสำหรับแอปพลิเคชันหรือเราไม่มีซอร์สโค้ดของวัตถุเลยโหมดอะแดปเตอร์จะมีประโยชน์
ข้อดีของอะแดปเตอร์:
1. แยกชั้นเป้าหมายและคลาสอะแดปเตอร์
2. เพิ่มความโปร่งใสและการใช้ซ้ำของชั้นเรียนห่อหุ้มการใช้งานที่เฉพาะเจาะจงในคลาสอะแดปเตอร์ซึ่งโปร่งใสไปยังคลาสไคลเอนต์และปรับปรุงความสามารถในการนำกลับมาใช้ใหม่ของอะแดปเตอร์
3. ทั้งความยืดหยุ่นและการขยายตัวเป็นสิ่งที่ดีมากและสอดคล้องกับหลักการของการเปิดและปิด
บทบาทที่เกี่ยวข้องในอะแดปเตอร์รวมถึงสิ่งต่อไปนี้:
เป้าหมาย: กำหนดอินเทอร์เฟซเฉพาะที่ใช้โดยไคลเอนต์
ไคลเอนต์: ใช้อินเทอร์เฟซเป้าหมายเพื่อร่วมมือกับวัตถุที่สอดคล้องกับอินเทอร์เฟซเป้าหมาย
Adaptee: อินเทอร์เฟซที่มีอยู่ซึ่งจำเป็นต้องปรับเปลี่ยน
อะแดปเตอร์: รับผิดชอบในการแปลงอินเทอร์เฟซของ Adaptee เป็นอินเทอร์เฟซของ Target อะแดปเตอร์เป็นคลาสคอนกรีตซึ่งเป็นแกนหลักของรูปแบบนี้
อะแดปเตอร์แบ่งออกเป็นสองประเภท: อะแดปเตอร์คลาสและอะแดปเตอร์วัตถุซึ่งจะอธิบายในรายละเอียดด้านล่าง
อะแดปเตอร์ชั้นเรียน
อะแดปเตอร์คลาสที่เรียกว่าหมายถึงอะแดปเตอร์อะแดปเตอร์ที่สืบทอดอะแดปเตอร์ Adaptee ของเราและใช้เป้าหมายอินเตอร์เฟสเป้าหมาย เนื่องจากเป็นมรดกเดียวใน Java อะแดปเตอร์นี้สามารถให้บริการอะแดปเตอร์ที่สืบทอดได้เท่านั้น รหัสมีดังนี้:
ผู้ปรับ
แพ็คเกจ com.bluemsun.classadapter; บุคคลชั้นเรียนสาธารณะ {ID INT ส่วนตัว; ชื่อสตริงส่วนตัว; / *** บุคคลสามารถพูดภาษาอังกฤษได้ตอนนี้*/ โมฆะสาธารณะ sayenglish () {system.out.println ("คนสามารถพูดภาษาอังกฤษได้!"); } /*** ละเว้น setter, getter -อินเทอร์เฟซเป้าหมาย (เป้าหมาย)
แพ็คเกจ com.bluemsun.classadapter;/*** เป้าหมายต้องการให้บุคคลนั้นสามารถพูดภาษาอังกฤษฝรั่งเศสและญี่ปุ่นได้ แต่ตอนนี้บุคคลสามารถพูดภาษาอังกฤษได้ * @author Administrator * */ส่วนต่อประสานสาธารณะ target_person {void saysenglish (); โมฆะ Saysfrench (); โมฆะ saysjapanese ();}อะแดปเตอร์
แพ็คเกจ com.bluemsun.classadapter;/*** คลาสอะแดปเตอร์คลาสเพราะมันสืบทอดบุคคลและ java สามารถสืบทอดได้ในเดี่ยวดังนั้นอะแดปเตอร์นี้จะให้บริการคลาสบุคคลเท่านั้น* อะแดปเตอร์นี้อนุญาตให้คลาสบุคคลที่จะใช้วิธีการที่ระบุโดยกลุ่มเป้าหมาย saysfrench () {system.out.println ("คนสามารถพูดภาษาฝรั่งเศสได้!"); } @Override โมฆะสาธารณะ Saysjapanese () {system.out.println ("คนสามารถพูดภาษาญี่ปุ่น!"); -ลูกค้า
แพ็คเกจ com.bluemsun.classadapter; การทดสอบระดับสาธารณะ {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {person target_person = adapter_person ใหม่ (); Person.SayenGlish (); Person.sayfrench (); Person.Sayjapanese (); -รหัสง่าย ๆ ข้างต้นแสดงให้เห็นถึงบทบาทของอะแดปเตอร์คลาส อย่างที่เราพูดในตอนแรกอะแดปเตอร์อะแดปเตอร์นี้สามารถให้บริการชั้นเรียนบุคคลนั้นได้เท่านั้น ในเวลานี้คุณอาจสงสัยว่าถ้าฉันต้องการปรับให้เข้ากับหลายชั้นเรียนฉันต้องเขียนอะแดปเตอร์สำหรับแต่ละชั้นเรียนที่ต้องปรับตัวหรือไม่? มีวิธีที่ยืดหยุ่นมากกว่านี้หรือไม่? คำตอบคือใช่! นี่คืออะแดปเตอร์วัตถุที่เรากำลังพูดถึงด้านล่าง
อะแดปเตอร์วัตถุ
อะแดปเตอร์วัตถุที่เรียกว่าเพียงแค่ใส่หมายความว่าอะแดปเตอร์ใช้อินเทอร์เฟซเป้าหมายของเรา แต่ไม่ได้สืบทอดคลาสที่จำเป็นต้องปรับเปลี่ยน แต่มันถูกดัดแปลงโดยผ่านตัวสร้างของอะแดปเตอร์ รหัสมีดังนี้: (เป้าหมาย Adaptee เหมือนกับด้านบน)
อะแดปเตอร์
แพ็คเกจ com.bluemsun.objectDapter; นำเข้า com.bluemsun.classadapter.person; นำเข้า com.bluemsun.classadapter.target_person;/** * อะแดปเตอร์วัตถุไม่เหมือนอะแดปเตอร์คลาส บุคคล; // ผ่านบุคคล Adaptee Class ในตัวสร้าง Public Adapter_person (บุคคล) {this.person = บุคคล; } // ใช้ sayenglish () ในอินเทอร์เฟซเป้าหมาย-โทร sayenglish () ใน Adaptee @Override โมฆะสาธารณะ Sayenglish () {this.person.sayenglish (); } // ใช้วิธีการอื่นในอินเทอร์เฟซ @Override โมฆะสาธารณะ sayfrench () {system.out.println ("บุคคลสามารถพูดภาษาฝรั่งเศสได้!"); } @Override โมฆะสาธารณะ Saysjapanese () {system.out.println ("คนสามารถพูดภาษาญี่ปุ่น!"); -ลูกค้า
แพ็คเกจ com.bluemsun.objectDapter; นำเข้า com.bluemsun.classadapter.person; นำเข้า com.bluemsun.classadapter.target_person; การทดสอบระดับสาธารณะ Person.SayenGlish (); Person.sayfrench (); Person.Sayjapanese (); -
อะแดปเตอร์วัตถุสามารถปรับให้เข้ากับหลายชั้นเรียนด้วยการดัดแปลง เพียงแค่ผ่านชั้นเรียนที่แตกต่างกันด้วยการปรับตัวในตัวสร้างของอะแดปเตอร์ ความยืดหยุ่น
ข้อดีของอะแดปเตอร์ชั้นเรียน:
1. เนื่องจากคลาสอะแดปเตอร์เป็นคลาสย่อยของคลาสอะแดปเตอร์วิธีอะแดปเตอร์บางอย่างสามารถถูกแทนที่ในคลาสอะแดปเตอร์ทำให้อะแดปเตอร์มีความยืดหยุ่นมากขึ้น
ข้อเสียของอะแดปเตอร์ชั้นเรียน:
1. สำหรับภาษาเช่น Java และ C# ที่ไม่รองรับการสืบทอดหลายครั้งที่คลาสอะแดปเตอร์ส่วนใหญ่สามารถปรับให้เข้ากับคลาสอะแดปเตอร์อย่างน้อยหนึ่งคลาสในแต่ละครั้งและคลาสนามธรรมเป้าหมายสามารถเป็นอินเทอร์เฟซไม่ใช่คลาส การใช้งานมีข้อ จำกัด บางประการ ไม่สามารถปรับให้เข้ากับคลาสอะแดปเตอร์และคลาสย่อยของอินเทอร์เฟซเป้าหมายได้ในเวลาเดียวกัน
ข้อดีของอะแดปเตอร์วัตถุ:
1. ปรับอะแดปเตอร์ที่แตกต่างกันหลายตัวเข้ากับเป้าหมายเดียวกันนั่นคืออะแดปเตอร์เดียวกันสามารถปรับทั้งคลาสอะแดปเตอร์และคลาสย่อยให้เข้ากับอินเทอร์เฟซเป้าหมาย
ข้อเสียของอะแดปเตอร์วัตถุ:
1. เมื่อเทียบกับโหมดอะแดปเตอร์คลาสไม่ใช่เรื่องง่ายที่จะเปลี่ยนคลาสอะแดปเตอร์
ขอบคุณสำหรับการอ่านฉันหวังว่ามันจะช่วยคุณได้ ขอบคุณสำหรับการสนับสนุนเว็บไซต์นี้!