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 ที่เกี่ยวข้อง เพื่อให้เข้าใจธรรมชาติของเมธอดที่มีอยู่ในอินเทอร์เฟซผู้ฟัง ให้เราพิจารณาตัวอย่างสองสามตัวอย่าง:
- อินเทอร์เฟซ WindowListener กำหนดวิธีการที่เกี่ยวข้องกับเหตุการณ์ของหน้าต่าง รวมถึงการเปิดและปิดหน้าต่าง การเปิดใช้งานและการปิดใช้งานหน้าต่าง และการสร้างไอคอนและการล้างพิษของหน้าต่าง
- อินเทอร์เฟซ KeyListener กำหนดวิธีการที่จัดการกับเหตุการณ์สำคัญที่เริ่มต้นโดยผู้ใช้โต้ตอบกับส่วนประกอบแป้นพิมพ์
- อินเทอร์เฟซ MouseListener จะได้รับแจ้งเมื่อเมาส์มีเสถียรภาพและได้รับเหตุการณ์ที่อาจเกิดขึ้นที่เกี่ยวข้องกับการออก เข้า คลิก กด หรือปล่อยส่วนประกอบบนเฟรมภาพของผู้ใช้
- อินเทอร์เฟซ Component Listener ได้รับศักยภาพของเหตุการณ์คอมโพเนนต์ ในที่นี้ ส่วนประกอบอ้างอิงถึงวัตถุกราฟิกใดๆ ที่ออกแบบมาเพื่อโต้ตอบกับผู้ใช้ เช่น ปุ่ม ช่องทำเครื่องหมาย และแถบเลื่อน
ความแตกต่างระหว่างคลาสอะแด็ปเตอร์และอ็อบเจ็กต์อะแดปเตอร์
เพื่อรับประกันการทำงานและความยืดหยุ่น การเขียนโปรแกรมเชิงวัตถุเช่น JAVA นำเสนอคุณสมบัติของโปรแกรมเมอร์ เช่น การสืบทอดและองค์ประกอบ หากคุณพยายามใช้รหัสเฉพาะซ้ำโดยสืบทอดคุณลักษณะจากคลาสอื่น คลาสย่อยที่คุณสร้างจะยังคงขึ้นอยู่กับคลาสพาเรนต์ตลอดความยาวของโปรแกรม
สิ่งนี้ทำให้ระบบ ในหลายกรณี ซับซ้อนมากขึ้นและสามารถทดสอบได้น้อยลง และทำให้การแลกเปลี่ยนการทำงานในขณะใช้งานทำได้ยากลำบาก ในการจัดองค์ประกอบ คลาสหนึ่งใช้อีกคลาสเท่านั้น การแยกส่วนระหว่างทั้งสองได้รับการส่งเสริมเพิ่มเติมโดยการกำหนดอินเทอร์เฟซอย่างชัดเจน
การอภิปรายระหว่างคลาสอะแด็ปเตอร์กับอ็อบเจ็กต์อะแด็ปเตอร์สามารถแก้ไขได้ดังนี้ คลาสอะแด็ปเตอร์ใช้การสืบทอด ดังนั้นจึงสามารถห่อคลาสได้เท่านั้น ไม่สามารถห่อส่วนต่อประสานได้เพราะตามคำจำกัดความ มันต้องมาจากคลาสพื้นฐานบางคลาส อ็อบเจ็กต์อะแด็ปเตอร์ใช้องค์ประกอบ และสามารถห่อทั้งคลาสและอินเตอร์เฟสได้ สิ่งนี้บรรลุผลสำเร็จในขั้นต้น เนื่องจากในการจัดองค์ประกอบ แต่ละคลาสหรือส่วนต่อประสานเป็นสมาชิกที่ห่อหุ้มส่วนตัว
ข้อดีของคลาสอะแด็ปเตอร์
- คลาสอะแด็ปเตอร์ช่วยคลาสที่ไม่เกี่ยวข้องในการทำงานร่วมกัน
- ด้วยการใช้คลาสอะแด็ปเตอร์ คลาสเดียวกันสามารถใช้ได้หลายวิธี
- ผู้ใช้จะมีตัวเลือกของชุดอุปกรณ์แบบเสียบได้สำหรับการพัฒนาแอปพลิเคชัน การใช้งานคลาสจึงทำให้สามารถนำกลับมาใช้ใหม่ได้อย่างมาก
- ช่วยเพิ่มความโปร่งใสของชั้นเรียน
- เป็นวิธีการรวมรูปแบบที่เกี่ยวข้องในชั้นเรียน
เรียนรู้ หลักสูตรวิศวกรรมซอฟต์แวร์ออนไลน์ จากมหาวิทยาลัยชั้นนำของโลก รับโปรแกรม 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 ทำงานอย่างไร