อะแดปเตอร์รุ่น
โหมดอะแดปเตอร์ (แบบอะแดปเตอร์) เป็นสะพานเชื่อมระหว่างสองอินเตอร์เฟซที่เข้ากันไม่ ประเภทของรูปแบบการออกแบบเป็นรูปแบบโครงสร้างซึ่งรวมคุณสมบัติของสองอินเตอร์เฟซที่แยกต่างหาก
รุ่นนี้เกี่ยวข้องกับชั้นเดียวที่เป็นผู้รับผิดชอบสำหรับฟังก์ชั่นอินเตอร์เฟซที่เข้ากันไม่ได้เป็นอิสระหรือเข้าร่วม ยกตัวอย่างเช่นในชีวิตจริงเป็นผู้อ่านการ์ดหน่วยความจำอะแดปเตอร์แล็ปท็อปและระหว่าง การ์ดหน่วยความจำของคุณลงในเครื่องอ่านแล้วอ่านลงในสมุดบันทึกเพื่อให้การ์ดหน่วยความจำที่สามารถอ่านผ่านโน๊ตบุ๊ค
เราแสดงให้เห็นถึงการใช้โหมดอะแดปเตอร์จากตัวอย่างต่อไปนี้ ประเด็นอุปกรณ์เครื่องเล่นเสียงสามารถเล่นไฟล์ MP3 ที่จะเล่น VLC และ MP4 ไฟล์โดยใช้เครื่องเล่นเสียงที่สูงขึ้น
การแนะนำ
เจตนา: การแปลงอินเตอร์เฟซของชั้นลงในอินเตอร์เฟซที่อื่นลูกค้าคาดหวังรูปแบบอะแดปเตอร์ที่ทำให้ผู้เรียนเป็นอย่างอื่นเพราะเข้ากันไม่ได้ของอินเตอร์เฟซไม่สามารถทำงานร่วมกันเพื่อทำงานร่วมกัน
เป็นหลักในการแก้ปัญหา: การแก้ปัญหาหลักในระบบซอฟแวร์ที่มักจะให้บางส่วนของ "วัตถุที่มีอยู่" ในสภาพแวดล้อมใหม่ข้อกำหนดด้านสิ่งแวดล้อมใหม่และอินเตอร์เฟซเป็นตอนนี้วัตถุที่ไม่สามารถพบ
เมื่อจะใช้: 1, ระบบต้องใช้ของชั้นที่มีอยู่และการเชื่อมต่อดังกล่าวไม่ได้ตอบสนองความต้องการของระบบ2 ต้องการที่จะสร้างชั้นสามารถนำกลับมาหารวมทั้งบางส่วนอาจจะทำงานกับบางส่วนของชั้นเรียนไม่ได้เกี่ยวข้องมากกับแต่ละอื่น ๆ ในการเปิดตัวในอนาคตของชั้นเรียนเหล่านี้ไม่จำเป็นต้องมีอินเตอร์เฟซที่แหล่งเดียวกัน 3 ผ่านการแปลงอินเตอร์เฟซชั้นในสายชั้นอื่น (เช่นเสือและนกขณะนี้กว่าเสือโดยไม่ต้องเพิ่มหน่วยงานภายใต้ความต้องการของอะแดปเตอร์เพิ่มเติมซึ่งในเสือวัตถุรวมใช้อินเตอร์เฟซการบิน.)
วิธีการแก้ไข: สืบทอดหรือการพึ่งพาอาศัยกัน (แนะนำ)
รหัสสำคัญ: อะแดปเตอร์มรดกหรือขึ้นอยู่กับวัตถุที่มีอยู่แล้วเพื่อให้บรรลุเป้าหมายที่ต้องการอินเตอร์เฟซ
ตัวอย่างการใช้งาน: 1, สหรัฐอเมริกาไฟฟ้า 110V, จีน 220V ควรมีอะแดปเตอร์เข้า 110V 220V2, JAVA JDK 1.1 มีอินเตอร์เฟซการแจงนับและมีอินเตอร์เฟซ Iterator ใน 1.2 คุณต้องการใช้ 1.2 JDK ก่อนที่ระบบจะต้องได้รับการแปลงเป็นอินเตอร์เฟซการแจงนับอินเตอร์เฟซ Iterator แล้วคุณจำเป็นต้องมีรูปแบบอะแดปเตอร์ 3 เรียกใช้โปรแกรมบน Windows LINUX 4, JAVA ใน JDBC
ข้อดี: 1 สามารถทำให้ทุกชนิดของการดำเนินการใด ๆ รวมกันทั้งสองไม่เกี่ยวข้องกัน2 การปรับปรุงที่นำมาใช้ในชั้นเรียน 3 เพิ่มความโปร่งใสของการเรียน 4 ความยืดหยุ่นที่ดี
ข้อเสีย: 1, การใช้งานที่มากเกินไปของอะแดปเตอร์ทำให้ระบบยุ่งมากและยากที่จะเข้าใจทั้งหมดยกตัวอย่างเช่นการโทรนั้นจะเห็นได้อย่างชัดเจนอินเตอร์เฟซในความเป็นจริงนำไปปรับใช้เพื่อให้เกิดการติดต่อภายใน B ได้กลายเป็นระบบที่ว่านี้เกิดขึ้นมากเกินไปเป็นประหนึ่งการเกิดภัยพิบัติ ดังนั้นถ้ามันไม่จำเป็นที่คุณจะไม่สามารถใช้อะแดปเตอร์ แต่โดยตรงกับระบบสร้างขึ้นใหม่ 2. ณ วันที่ JAVA มากที่สุดรับช่วงชั้นดังนั้นในการปรับตัวการปรับตัวที่ดีที่สุดโดยชั้นเรียนและต้องกำหนดเป้าหมายระดับเป็นระดับนามธรรม
สถานการณ์การใช้งาน: มีแรงจูงใจในการปรับเปลี่ยนการดำเนินงานปกติอินเตอร์เฟซของระบบคือแล้วคุณควรพิจารณาการใช้โหมดอะแดปเตอร์
หมายเหตุ: อะแดปเตอร์จะไม่เพิ่มเมื่อการออกแบบรายละเอียด แต่จะแก้ปัญหาในโครงการบริการ
การสำนึก
เรามีอินเตอร์เฟซที่MediaPlayerและความตระหนักของชนชั้นนิติบุคคลอินเตอร์เฟซAudioPlayerMediaPlayerโดยค่าเริ่มต้นAudioPlayer สามารถเล่น MP3 รูปแบบไฟล์เสียง
เรายังมีอินเตอร์เฟซที่อื่นAdvancedMediaPlayerและดำเนินการเรียนนิติบุคคลอินเตอร์เฟซAdvancedMediaPlayerชั้นนี้สามารถเล่นไฟล์ VLC และรูปแบบ MP4
เราต้องการให้AudioPlayerเล่นไฟล์เสียงในรูปแบบอื่น ๆ เพื่อให้บรรลุนี้เราต้องสร้างชั้นอะแดปเตอร์ดำเนินการติดต่อMediaAdapterMediaPlayer และใช้วัตถุAdvancedMediaPlayerการเล่นรูปแบบที่ต้องการ
AudioPlayerใช้อะแดปเตอร์ระดับMediaAdapterโอนประเภทเสียงที่ต้องการไม่จำเป็นต้องรู้ว่ารูปแบบของชั้นที่เกิดขึ้นจริงสามารถเล่นความต้องการของเสียงAdapterPatternDemo เรียนสาธิตของเราโดยใช้ระดับAudioPlayer การเล่นหลากหลายรูปแบบ
ขั้นตอนที่ 1
ผู้เล่นและเล่นสื่อที่ทันสมัยมากขึ้นเพื่อสร้างอินเตอร์เฟซสำหรับสื่อ
MediaPlayer.java
MediaPlayer อินเตอร์เฟซที่สาธารณะ { ประชาชนเล่นเป็นโมฆะ (String audioType สตริง fileName); }
AdvancedMediaPlayer.java
AdvancedMediaPlayer อินเตอร์เฟซที่สาธารณะ { โมฆะสาธารณะ playVlc (String fileName); โมฆะสาธารณะ playMp4 (String fileName); }
ขั้นตอนที่ 2
สร้างคลาสนิติบุคคลตระหนักถึงอินเตอร์เฟซAdvancedMediaPlayer
VlcPlayer.java
เรียนสาธารณะ VlcPlayer ดำเนิน AdvancedMediaPlayer { @Override โมฆะสาธารณะ playVlc (String fileName) { System.out.println ( "เล่น VLC ชื่อไฟล์ :. " + FileName); } @Override โมฆะสาธารณะ playMp4 (String fileName) { // ไม่ทำอะไร} }
Mp4Player.java
เรียนสาธารณะ Mp4Player ดำเนิน AdvancedMediaPlayer { @Override โมฆะสาธารณะ playVlc (String fileName) { // ไม่ทำอะไร} @Override โมฆะสาธารณะ playMp4 (String fileName) { System.out.println ( "เล่นชื่อไฟล์ MP4 :. " + FileName); } }
ขั้นตอนที่ 3
สร้างคลาสMediaPlayerใช้อะแดปเตอร์อินเตอร์เฟซ
MediaAdapter.java
เรียนสาธารณะ MediaAdapter ดำเนิน MediaPlayer { AdvancedMediaPlayer advancedMusicPlayer; ประชาชน MediaAdapter (String audioType) { ถ้า (audioType.equalsIgnoreCase ( "VLC")) { advancedMusicPlayer = ใหม่ VlcPlayer (); } else if (audioType.equalsIgnoreCase ( "mp4")) { advancedMusicPlayer = Mp4Player ใหม่ (); } } @Override เล่นโมฆะสาธารณะ (String audioType สตริงชื่อไฟล์) { ถ้า (audioType.equalsIgnoreCase ( "VLC")) { advancedMusicPlayer.playVlc (ชื่อไฟล์); } else if (audioType.equalsIgnoreCase ( "mp4")) { advancedMusicPlayer.playMp4 (ชื่อไฟล์); } } }
ขั้นตอนที่ 4
สร้างคลาสนิติบุคคลตระหนักถึงอินเตอร์เฟซMediaPlayer
AudioPlayer.java
เรียนสาธารณะ AudioPlayer ดำเนิน MediaPlayer { MediaAdapter mediaAdapter; @Override เล่นโมฆะสาธารณะ (String audioType สตริงชื่อไฟล์) { // เล่นไฟล์เพลง MP3, การสนับสนุนในตัว (ถ้า audioType.equalsIgnoreCase ( "mp3")) { System.out.println ( "เล่นชื่อไฟล์ MP3 :. " + FileName); } // MediaAdapter ให้เล่นรูปแบบไฟล์อื่น ๆ ได้รับการสนับสนุนอื่นถ้า (audioType.equalsIgnoreCase ( "VLC") || AudioType.equalsIgnoreCase ( "mp4")) { mediaAdapter = ใหม่ MediaAdapter (audioType); mediaAdapter.play (audioType ชื่อไฟล์); } อื่น { System.out.println ( "สื่อไม่ถูกต้อง." + audioType + "รูปแบบไม่สนับสนุน"); } } }
ขั้นตอนที่ 5
AudioPlayer ใช้ในการเล่นที่แตกต่างกันของรูปแบบเสียง
AdapterPatternDemo.java
AdapterPatternDemo คลาสที่สาธารณะ { ประชาชนเป็นโมฆะคง main (String args []) { AudioPlayer Audioplayer = AudioPlayer ใหม่ (); audioPlayer.play ( "mp3", "เกิน horizon.mp3 ฯ "); audioPlayer.play ( "mp4", "alone.mp4"); audioPlayer.play ( "VLC", "ไกล away.vlc"); audioPlayer.play ( "AVI", "ใจ me.avi"); } }
ขั้นตอนที่ 6
ตรวจสอบการส่งออก
เล่นชื่อไฟล์ MP3 :. นอกเหนือ horizon.mp3 เล่นไฟล์ MP4 ชื่อ :. Alone.mp4 เล่น VLC ชื่อไฟล์ :. ฟา away.vlc ไกล สื่อไม่ถูกต้อง. รูปแบบ Avi ไม่สนับสนุน