Adapter Class ใน Java คืออะไร? ข้อดีของคลาสอะแด็ปเตอร์และประเภท

เผยแพร่แล้ว: 2021-05-19

สารบัญ

Adapter-Class คืออะไร?

ใน JAVA คลาสอะแด็ปเตอร์อนุญาตให้ใช้อินเทอร์เฟซตัวฟังเริ่มต้น แนวคิดของอินเทอร์เฟซผู้ฟังเกิดจากโมเดลเหตุการณ์การมอบหมาย มันเป็นหนึ่งในหลาย ๆ เทคนิคที่ใช้จัดการกับเหตุการณ์ในภาษาการเขียนโปรแกรม Graphical User Interface (GUI) เช่น JAVA

การเขียนโปรแกรม GUI นั้นเน้นไปที่เหตุการณ์เป็นหลัก โดยที่ผู้ใช้โต้ตอบกับระบบผ่านภาพและกราฟิกที่เกี่ยวข้อง ซึ่งหมายความว่าทุกกิจกรรมที่เริ่มต้นโดยผู้ใช้ เช่น การเคลื่อนไหวของเมาส์ที่เปลี่ยนพิกัดของตัวชี้เมาส์บนหน้าจอ คลิกปุ่ม หรือเลื่อนหน้า ถือเป็นเหตุการณ์ที่ไม่ขึ้นต่อกัน

กิจกรรมเหตุการณ์อิสระแต่ละกิจกรรมเหล่านี้เชื่อมโยงกับส่วนของโค้ดโดยแท้จริง ซึ่งจะวนซ้ำว่าแอปพลิเคชันควรตอบสนองอย่างไรต่อผู้ใช้ ทางเดินนั้นเรียบง่าย ผู้ใช้ (ต้นทาง) สร้างเหตุการณ์และส่งไปยังอินเทอร์เฟซผู้ฟังอย่างน้อยหนึ่งรายการ เมื่อได้รับศักยภาพของเหตุการณ์แล้ว อินเทอร์เฟซผู้ฟังจะประมวลผลเหตุการณ์และส่งคืนการตอบสนองที่เหมาะสม

เส้นทางนี้ยืนยันกระบวนการจัดการเหตุการณ์ ดังนั้นคลาสอะแด็ปเตอร์ใน JAVA จึงถูกใช้เพื่อใช้งานอินเทอร์เฟซที่มีชุดของเมธอดจำลอง หากโปรแกรมเมอร์เลือกที่จะสืบทอดคลาสอะแด็ปเตอร์ พวกเขาจะไม่ถูกบังคับให้ใช้เมธอดทั้งหมดที่แสดงรายการภายใต้อินเทอร์เฟซตัวฟังเฉพาะ คลาสอะแด็ปเตอร์สามารถจัดคลาสย่อยเพิ่มเติมเพื่อให้โปรแกรมเมอร์สามารถแทนที่เมธอดที่จำเป็นเท่านั้น กล่าวอีกนัยหนึ่ง โดยใช้คลาสอะแด็ปเตอร์ โปรแกรมเมอร์สามารถสร้างส่วนต่อประสานผู้ฟังของตนเองกับเหตุการณ์ฟิลด์ได้อย่างรวดเร็ว ซึ่งจะช่วยบันทึกรหัส

ความสัมพันธ์ระหว่างคลาสอะแด็ปเตอร์และส่วนต่อประสานผู้ฟังคืออะไร?

Listeners ถูกใช้เมื่อโปรแกรมเมอร์ตั้งใจที่จะใช้วิธีการส่วนใหญ่ที่แสดงอยู่ภายใต้อินเทอร์เฟซ หากคลาสใช้อินเทอร์เฟสผู้ฟังโดยตรง เมธอดทั้งหมดภายในอินเทอร์เฟซนั้นต้องได้รับการติดตั้ง ทำให้โค้ดมีขนาดใหญ่เกินสมควร ความซับซ้อนนี้สามารถแก้ไขได้โดยการเรียกใช้คลาสอะแด็ปเตอร์ คลาสอะแด็ปเตอร์พิสูจน์ให้เห็นถึงความจำเป็นในกรณีที่เหตุการณ์เรียกใช้เมธอดเฉพาะเท่านั้น

โปรแกรมเมอร์สร้างคลาสย่อยและแทนที่เมธอดสนใจเพื่อใช้คลาสอะแด็ปเตอร์ ดังนั้นคลาสอะแด็ปเตอร์จึงเป็นประโยชน์สำหรับอินเทอร์เฟซผู้ฟังใน JAVA ที่มีมากกว่าหนึ่งเมธอด เพื่อให้เข้าใจสิ่งนี้มากขึ้น ให้เราพิจารณาตัวอย่างของอินเทอร์เฟซ MouseListener อินเทอร์เฟซนี้จะได้รับแจ้งทุกครั้งที่มีการเปลี่ยนแปลงในสถานะของเมาส์ มีห้าวิธี ได้แก่ การคลิกเมาส์, mouseExited, mouseEntered, mousePressed และ mouseReleased

เมื่อได้รับแจ้งเกี่ยวกับเหตุการณ์ แม้ว่าจำเป็นต้องใช้วิธีการเหล่านี้เท่านั้น แต่ก็จำเป็นต้องดำเนินการทั้งหมด วิธีการที่ไม่จำเป็นจะถูกเก็บไว้ว่างเปล่า คลาสอะแด็ปเตอร์ถูกใช้เพื่อหลีกเลี่ยงการนำเนื้อหาเมธอดที่ว่างเปล่าไปใช้โดยไม่จำเป็น

ทำความเข้าใจกับรูปแบบการออกแบบอแด็ปเตอร์

ในสำนวนที่ไม่ใช้เทคนิค ตามคำนิยาม อะแด็ปเตอร์ได้รับการออกแบบโครงสร้างเพื่อให้อินเทอร์เฟซที่เข้ากันไม่ได้สองตัวสามารถทำงานร่วมกันได้ ดังนั้นรูปแบบอะแดปเตอร์จึงสามารถทำให้อินเทอร์เฟซที่เข้ากันไม่ได้สองอินเทอร์เฟซเข้ากันได้โดยไม่ต้องเปลี่ยนรหัสที่มีอยู่ อินเทอร์เฟซที่เกี่ยวข้องอาจไม่สอดคล้องกัน แต่ฟังก์ชันภายในควรตรงกับความต้องการที่ต้องการ เพื่อให้ชัดเจนยิ่งขึ้น ให้เราพิจารณาตัวอย่างที่เกี่ยวข้อง

เราทราบดีว่าประเทศต่างๆ มีเต้ารับไฟฟ้า แรงดันไฟฟ้า และการวัดความถี่ต่างกัน หากเราต้องใช้งานอุปกรณ์ที่ออกแบบตามข้อกำหนดของประเทศหนึ่งในอีกประเทศหนึ่ง เราจำเป็นต้องตรวจสอบให้แน่ใจว่าอุปกรณ์นั้นใช้งานร่วมกันได้

ตัวอย่างเช่นในสหราชอาณาจักรซ็อกเก็ตประเภท G มักใช้ในสหรัฐอเมริกาและญี่ปุ่นซ็อกเก็ตประเภท A และประเภท B และในอินเดียประเภท C ประเภท D และประเภท M แล็ปท็อปหรืออุปกรณ์พกพาที่นำเข้าจากอินเดียจะ จึงไม่สอดคล้องกับข้อกำหนดทางไฟฟ้าของประเทศสหรัฐอเมริกาและญี่ปุ่น นี่คือจุดที่จุดประสงค์ของอแด็ปเตอร์กลายเป็นสิ่งสำคัญในการแปลงโค้ดที่เข้ากันไม่ได้ให้เป็นโค้ดที่เข้ากันได้

ประเภทของคลาสอะแด็ปเตอร์

คลาสอะแด็ปเตอร์สามารถพบได้ในจาวา awt.the แพ็คเกจ java.awt.dnd และ java.swing.event คลาสอะแด็ปเตอร์มาตรฐานที่มีอินเทอร์เฟซตัวฟังที่สอดคล้องกันใน JAVA มีการกล่าวถึงด้านล่างสำหรับแต่ละแพ็กเกจเหล่านี้

1.จาวา อ. อีฟ

คลาสอแดปเตอร์ อินเทอร์เฟซผู้ฟัง
WindowAdapter WindowListener
คีย์อะแดปเตอร์ KeyListener
เมาส์อะแดปเตอร์ MouseListener
MouseMotionAdapter MouseMotionListener
FocusAdapter FocusListener
ส่วนประกอบอะแดปเตอร์ ส่วนประกอบผู้ฟัง
คอนเทนเนอร์Adapter คอนเทนเนอร์Listener
ลำดับชั้นขอบเขตอะแดปเตอร์ ลำดับชั้นขอบเขตผู้ฟัง

2. java.awt.dnd

คลาสอแดปเตอร์ อินเทอร์เฟซผู้ฟัง
DragSourceAdapter DragSourceListener
DragTargetAdapter DragTargetListener

3. javax.swing.event

คลาสอแดปเตอร์ อินเทอร์เฟซผู้ฟัง
MouseInputAdapter MouseInputListener
InternalFrameAdapter InternalFrameListener

มีอยู่ใน Abstract Window Toolkit ของแพ็คเกจ Java ที่เกี่ยวข้อง เพื่อให้เข้าใจธรรมชาติของเมธอดที่มีอยู่ในอินเทอร์เฟซผู้ฟัง ให้เราพิจารณาตัวอย่างสองสามตัวอย่าง:

  1. อินเทอร์เฟซ WindowListener กำหนดวิธีการที่เกี่ยวข้องกับเหตุการณ์ของหน้าต่าง รวมถึงการเปิดและปิดหน้าต่าง การเปิดใช้งานและการปิดใช้งานหน้าต่าง และการสร้างไอคอนและการล้างพิษของหน้าต่าง
  2. อินเทอร์เฟซ KeyListener กำหนดวิธีการที่จัดการกับเหตุการณ์สำคัญที่เริ่มต้นโดยผู้ใช้โต้ตอบกับส่วนประกอบแป้นพิมพ์
  3. อินเทอร์เฟซ MouseListener จะได้รับแจ้งเมื่อเมาส์มีเสถียรภาพและได้รับเหตุการณ์ที่อาจเกิดขึ้นที่เกี่ยวข้องกับการออก เข้า คลิก กด หรือปล่อยส่วนประกอบบนเฟรมภาพของผู้ใช้
  4. อินเทอร์เฟซ Component Listener ได้รับศักยภาพของเหตุการณ์คอมโพเนนต์ ในที่นี้ ส่วนประกอบอ้างอิงถึงวัตถุกราฟิกใดๆ ที่ออกแบบมาเพื่อโต้ตอบกับผู้ใช้ เช่น ปุ่ม ช่องทำเครื่องหมาย และแถบเลื่อน

ความแตกต่างระหว่างคลาสอะแด็ปเตอร์และอ็อบเจ็กต์อะแดปเตอร์

เพื่อรับประกันการทำงานและความยืดหยุ่น การเขียนโปรแกรมเชิงวัตถุเช่น JAVA นำเสนอคุณสมบัติของโปรแกรมเมอร์ เช่น การสืบทอดและองค์ประกอบ หากคุณพยายามใช้รหัสเฉพาะซ้ำโดยสืบทอดคุณลักษณะจากคลาสอื่น คลาสย่อยที่คุณสร้างจะยังคงขึ้นอยู่กับคลาสพาเรนต์ตลอดความยาวของโปรแกรม

สิ่งนี้ทำให้ระบบ ในหลายกรณี ซับซ้อนมากขึ้นและสามารถทดสอบได้น้อยลง และทำให้การแลกเปลี่ยนการทำงานในขณะใช้งานทำได้ยากลำบาก ในการจัดองค์ประกอบ คลาสหนึ่งใช้อีกคลาสเท่านั้น การแยกส่วนระหว่างทั้งสองได้รับการส่งเสริมเพิ่มเติมโดยการกำหนดอินเทอร์เฟซอย่างชัดเจน

การอภิปรายระหว่างคลาสอะแด็ปเตอร์กับอ็อบเจ็กต์อะแด็ปเตอร์สามารถแก้ไขได้ดังนี้ คลาสอะแด็ปเตอร์ใช้การสืบทอด ดังนั้นจึงสามารถห่อคลาสได้เท่านั้น ไม่สามารถห่อส่วนต่อประสานได้เพราะตามคำจำกัดความ มันต้องมาจากคลาสพื้นฐานบางคลาส อ็อบเจ็กต์อะแด็ปเตอร์ใช้องค์ประกอบ และสามารถห่อทั้งคลาสและอินเตอร์เฟสได้ สิ่งนี้บรรลุผลสำเร็จในขั้นต้น เนื่องจากในการจัดองค์ประกอบ แต่ละคลาสหรือส่วนต่อประสานเป็นสมาชิกที่ห่อหุ้มส่วนตัว

ข้อดีของคลาสอะแด็ปเตอร์

  1. คลาสอะแด็ปเตอร์ช่วยคลาสที่ไม่เกี่ยวข้องในการทำงานร่วมกัน
  2. ด้วยการใช้คลาสอะแด็ปเตอร์ คลาสเดียวกันสามารถใช้ได้หลายวิธี
  3. ผู้ใช้จะมีตัวเลือกของชุดอุปกรณ์แบบเสียบได้สำหรับการพัฒนาแอปพลิเคชัน การใช้งานคลาสจึงทำให้สามารถนำกลับมาใช้ใหม่ได้อย่างมาก
  4. ช่วยเพิ่มความโปร่งใสของชั้นเรียน
  5. เป็นวิธีการรวมรูปแบบที่เกี่ยวข้องในชั้นเรียน

เรียนรู้ หลักสูตรวิศวกรรมซอฟต์แวร์ออนไลน์ จากมหาวิทยาลัยชั้นนำของโลก รับโปรแกรม PG สำหรับผู้บริหาร โปรแกรมประกาศนียบัตรขั้นสูง หรือโปรแกรมปริญญาโท เพื่อติดตามอาชีพของคุณอย่างรวดเร็ว

บทสรุป

ในบทความนี้ เราเข้าใจกลไกของคลาสอะแด็ปเตอร์ใน JAVA แพ็กเกจหลักสามแพ็กเกจที่มีคลาสอะแด็ปเตอร์ และประโยชน์ของคลาสอะแด็ปเตอร์สำหรับโปรแกรมเมอร์ คลาสอะแด็ปเตอร์เป็นคลาสนามธรรมสำหรับการรับเหตุการณ์ต่างๆ และมีอยู่เพื่อความสะดวกสำหรับการสร้างอ็อบเจ็กต์ Listener ด้วยฟังก์ชันการทำงานที่แตกต่างกัน คลาสอะแด็ปเตอร์ทำให้โปรแกรมเมอร์มีแพลตฟอร์มที่เป็นนวัตกรรมใหม่ผ่านวิธีการของ Swing

หากคุณต้องการพัฒนาทักษะ Java ของคุณ คุณต้องลงมือทำโปรเจ็กต์ Java เหล่านี้ หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับ Java การพัฒนาแบบฟูลสแตก โปรดดูโปรแกรม Executive PG ของ upGrad & IIIT-B ในการพัฒนาซอฟต์แวร์แบบครบวงจร ซึ่งออกแบบมาสำหรับมืออาชีพที่ทำงานและมีการฝึกอบรมที่เข้มงวดมากกว่า 500 ชั่วโมง 9+ โครงการและการมอบหมาย สถานะศิษย์เก่า IIIT-B โครงการหลักในทางปฏิบัติและความช่วยเหลือด้านงานกับบริษัทชั้นนำ

คลาสอะแด็ปเตอร์ใน Java คืออะไร?

คลาสอะแด็ปเตอร์เป็นคลาสที่กำหนดโดยใช้รูปแบบอะแด็ปเตอร์ อะแด็ปเตอร์สามารถใช้เพื่อเพิ่มความสามารถใหม่ให้กับคลาสที่มีอยู่โดยไม่ต้องแก้ไขคลาสเดิม ตัวอย่างเช่น คลาส java.util.Scanner มาจากแพ็คเกจ java.util คลาส Scanner ไม่สามารถอ่านจากไฟล์ได้ เนื่องจากไฟล์ไม่ใช่ InputStream ในการอ่านจากไฟล์ เราสร้างคลาสอะแดปเตอร์ที่ยอมรับ InputStream เป็นอาร์กิวเมนต์และส่งกลับข้อมูลที่ประมวลผลเป็นอ็อบเจ็กต์ รูปแบบอะแดปเตอร์ใช้เพื่อขยายฟังก์ชันการทำงานของคลาสที่มีอยู่โดยไม่ต้องแก้ไขโค้ดแต่อย่างใด

รูปแบบการออกแบบใน Java คืออะไร?

รูปแบบการออกแบบเป็นวิธีการแก้ปัญหาที่นำกลับมาใช้ใหม่ได้ทั่วไปสำหรับปัญหาที่เกิดขึ้นโดยทั่วไปภายในบริบทที่กำหนดในการออกแบบซอฟต์แวร์ ไม่ใช่การออกแบบที่เสร็จสมบูรณ์ซึ่งสามารถแปลงเป็นโค้ดได้โดยตรง เป็นคำอธิบายหรือเทมเพลตสำหรับวิธีแก้ปัญหาที่สามารถใช้ได้ในสถานการณ์ต่างๆ ในการเขียนโปรแกรมเชิงวัตถุ รูปแบบการออกแบบถูกกำหนดให้ง่ายต่อการออกแบบและใช้งานระบบซอฟต์แวร์ มีรูปแบบการออกแบบหลายแบบใน Java ไม่จำเป็นว่าจะต้องนำรูปแบบการออกแบบมาจากภาษาอื่น รูปแบบการออกแบบสามารถเขียนได้ในรูปแบบที่เรียบง่ายและสั้นมาก

รูปแบบการออกแบบที่ใช้มากที่สุดใน Java คืออะไร?

คุณจะพบรูปแบบการออกแบบมากมายในจาวา รูปแบบการออกแบบเดียวที่ใช้มากที่สุดคือรูปแบบโรงงาน มีแอพพลิเคชั่นมากมายในการพัฒนาองค์กร ช่วยในการลบการพึ่งพาคลาสที่เป็นรูปธรรมในแอปพลิเคชัน ให้เรายกตัวอย่างในชีวิตจริงให้คุณ ในแอปพลิเคชันอีคอมเมิร์ซ คุณอาจมีข้อกำหนดในการสร้างออบเจ็กต์ของผู้ใช้ทั้งในสภาพแวดล้อมการทดสอบและการใช้งานจริง คลาสผู้ใช้อาจมีคลาสย่อยมากมายเช่น Admin, Shopkeeper, ผู้ขาย, ผู้ใช้ ฯลฯ วิธีการหลักทั่วไปในรูปแบบโรงงานมีลักษณะดังนี้: UserFactory คลาสสาธารณะ { สร้างวัตถุคงที่สาธารณะ () { ผู้ใช้ผู้ใช้ = createAdmin (); // ดูว่า admin อนุญาตให้ return user หรือไม่ ; // ส่งคืนผู้ใช้ปัจจุบัน } } ดูว่าคลาสผู้ใช้ไม่ขึ้นอยู่กับคลาสที่เป็นรูปธรรมได้อย่างไร แม้ว่าจะไม่ใช่ตัวอย่างที่สมบูรณ์ แต่ก็แสดงให้คุณเห็นว่ารูปแบบ Factory ทำงานอย่างไร