【ข้อความ】
เรารู้ว่าการควบคุม UI ที่สำคัญและยากที่สุดใน Android คือการควบคุมรายการ ListView หากคุณต้องการใช้มันอย่างยืดหยุ่นคุณต้องใช้อะแดปเตอร์อะแดปเตอร์ ดังนั้นฉันคิดว่ามันยังจำเป็นที่จะต้องเรียนรู้โหมดอะแดปเตอร์ใน Java (ไม่ว่าจะสามารถใช้งานได้ในอนาคต) ท้ายที่สุดแล้วภาษา Java เป็นรากฐานที่สำคัญมากสำหรับการพัฒนา Android
เพื่อให้เข้าใจถึงโหมดอะแดปเตอร์อย่างเต็มที่มีความรู้มากมายที่จะเรียนรู้ตัวอย่างเช่นโหมดอะแดปเตอร์มีสองรูปแบบที่แตกต่างกัน: โหมดอะแดปเตอร์ของคลาสและโหมดอะแดปเตอร์ของวัตถุ แต่ในฐานะผู้เริ่มต้นฉันจะเรียนรู้ความรู้เบื้องต้นเกี่ยวกับโหมด orchestration และฉันจะปรับปรุงต่อไปในอนาคต ฉันหวังว่ารองเท้าเด็กที่กำลังดิ้นรนบนถนนสู่การเข้ารหัสจะไม่บ่น→ _ →
1. การแนะนำอะแดปเตอร์
•แปลงอินเทอร์เฟซของคลาสหนึ่งเป็นอินเทอร์เฟซอื่นที่ลูกค้าต้องการ โหมดอะแดปเตอร์อนุญาตให้คลาสที่ไม่สามารถทำงานร่วมกันได้เนื่องจากความไม่ลงรอยกันของอินเตอร์เฟสในการทำงานร่วมกัน
•โหมดอะแดปเตอร์ใช้กันทั่วไปในกรอบ Java ที่ทันสมัย รูปแบบนี้เหมาะสำหรับสถานการณ์ต่อไปนี้: คุณต้องการใช้คลาสที่มีอยู่ แต่คลาสไม่เป็นไปตามข้อกำหนดของอินเทอร์เฟซ หรือคุณจำเป็นต้องสร้างคลาสที่นำกลับมาใช้ใหม่ได้ซึ่งปรับให้เข้ากับคลาสอื่น ๆ ที่ไม่ได้ให้อินเทอร์เฟซที่เหมาะสม
2. ตัวอย่างของแอปเปิ้ลและส้ม
แนวคิดของอะแดปเตอร์สามารถแสดงได้โดยตัวอย่างง่ายๆต่อไปนี้ ตัวอย่างนี้คือการทำให้ "ปรับ" สีส้มเป็นแอปเปิ้ล ดังที่แสดงในรูปด้านล่าง:
อย่างที่คุณเห็นในครึ่งล่างของภาพด้านบนอะแดปเตอร์มีอินสแตนซ์สีส้มและสืบทอดคลาส Apple วัตถุสีส้มถูกวางไว้ในอะแดปเตอร์ดังนั้นสีส้มจึงทำหน้าที่เหมือนแอปเปิ้ล แผนภาพลอจิกที่สอดคล้องกันมีดังนี้:
3. ตัวอย่างของปลั๊กซ็อกเก็ตกล่อง
ในรูปด้านบนเราสามารถเชื่อมต่อปลั๊กบนซ็อกเก็ตซ้ายผ่านอะแดปเตอร์กลางได้สำเร็จ
4. การใช้งานรหัสของอะแดปเตอร์ปลั๊ก
/** โหมดอะแดปเตอร์ (อะแดปเตอร์): แปลงอินเทอร์เฟซของคลาสหนึ่งเป็นอินเทอร์เฟซอื่นที่ลูกค้าต้องการ โหมดอะแดปเตอร์อนุญาตให้คลาสที่ไม่สามารถทำงานร่วมกันได้เนื่องจากความไม่ลงรอยกันของอินเตอร์เฟสในการทำงานร่วมกัน */คลาส adapterDemo {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// power a เริ่มทำงาน powera powera = ใหม่ poweraimpl (); เริ่มต้น (Powera); powerb powerb = new powerBimpl (); Poweraadapter PA = ใหม่ Poweraadapter (PowerB); เริ่มต้น (PA); } // วิธีการนิยาม: Powera ทำงานเป็นโมฆะคงที่สาธารณะเริ่มต้น (Powera Powera) {System.out.println (".... บางรหัสที่ซ้ำกัน ...... "); powera.insert (); System.out.println ("... บางรหัสที่ซ้ำกัน .../n"); } /** การเริ่มต้นโมฆะแบบคงที่สาธารณะ (PowerB PowerB) {System.out.println ("... บางรหัสที่ซ้ำกัน ...... "); powerb.connect (); System.out.println ("... บางรหัสที่ซ้ำกัน ...... "); } */} // กำหนดคลาสอะแดปเตอร์คลาส Poweraadapter ใช้ Powera {Private PowerB PowerB; // อินเตอร์เฟสเพื่อปรับ PowerAadapter สาธารณะ (PowerB PowerB) {this.powerb = PowerB; } // การใช้งานอินเทอร์เฟซ Powera คุณต้องใช้วิธีการใน Powera Public Void Insert () {powerb.connect (); }}/** Power A Interface*/Interface Powera {Public Void Insert ();} คลาส PoweraImpl ใช้ Powera {public Void Insert () {System.out.println ("Power A อินเทอร์เฟซถูกแทรกเริ่มทำงาน"); }}/** อินเตอร์เฟสพลังงาน B*/อินเตอร์เฟส powerb {โมฆะสาธารณะเชื่อมต่อ ();} คลาส PowerBimpl ใช้ PowerB {โมฆะสาธารณะเชื่อมต่อ () {System.out.println ("อินเตอร์เฟสพลังงาน B เริ่มทำงานเริ่มทำงาน"); - ในตัวอย่างนี้เราต้องการให้ PowerB เรียกรหัสในวิธีการเริ่มต้น () ใน Powera; แน่นอนเราไม่ต้องการทำซ้ำรหัส 23 หรือ 25 บรรทัดที่แสดงความคิดเห็น ในเวลานี้คุณสามารถใช้โหมดอะแดปเตอร์
คำอธิบายรหัสข้างต้น:
บรรทัดที่ 30: เริ่มกำหนดอะแดปเตอร์ซึ่งเป็นจุดเริ่มต้นของรหัสหลัก
บรรทัดที่ 33 และ 34: ส่งผ่าน Powerb ด้วยวิธีการก่อสร้าง
รหัสบรรทัด 37: เนื่องจากมันคือการใช้อินเตอร์เฟส powera จึงจำเป็นต้องใช้วิธีการแทรก () ใน Powera;
รหัสบรรทัด 38: เราเรียกวิธีการเชื่อมต่อ () ของ PowerB ในวิธีการแทรก () ของ Powera;
ทันทีหลังจากนั้นรหัส 10, 11 และ 12 บรรทัดหมายถึง: เมื่อใหม่ A PowerB เราจะส่งผ่านไปยังอะแดปเตอร์ Poweraadapter เริ่มต้นอะแดปเตอร์แล้ว PowerB จะเรียกใช้รหัสในบรรทัดที่ 16, 24 และ 18
หมายเหตุ: ลำดับที่ 16, 24 และ 18 ไม่ผิดเพราะในอะแดปเตอร์เราได้แทนที่รหัส 24 บรรทัดเป็นบรรทัด 17
เอฟเฟกต์การดำเนินการมีดังนี้:
ในทำนองเดียวกันถ้าฉันต้องการใช้ Powera เป็น PowerB ฉันสามารถกำหนดอะแดปเตอร์ PowerBadapter อื่นเพื่อใช้อะแดปเตอร์แบบสองทิศทาง
5. สรุป
รหัสความคิดเห็นในบรรทัดที่ 23 และ 25 ข้างต้นระบุว่าเป็นรหัสที่ซ้ำกันจำนวนมากและไม่สอดคล้องกับการคิดเชิงวัตถุ ตอนนี้เราจินตนาการถึงตัวอย่างของโครงการของเราที่ออนไลน์และลูกค้ากำลังใช้งาน แต่ก็เพิ่มความต้องการใหม่ มีหลักการ OO สำหรับวัตถุที่มุ่งเน้นวัตถุ: ปิดการดัดแปลง (หลังจากออนไลน์แล้วพยายามอย่าแก้ไขรหัสมิฉะนั้นปฏิกิริยาลูกโซ่อาจเกิดขึ้นส่งผลให้เกิดปัญหากับรหัสอื่น ๆ ที่เรียกวิธีนี้) และเปิดไปสู่ส่วนขยาย ณ จุดนี้เราสามารถลดรหัสที่ซ้ำกันเหล่านี้ผ่านอะแดปเตอร์
6. หลักการออกแบบ oo
•การเขียนโปรแกรมเชิงอินเตอร์เฟส (การเขียนโปรแกรมเชิงนามธรรม)
•การเปลี่ยนแปลงแพ็คเกจ
•ใช้ชุดค่าผสมมากขึ้นใช้การสืบทอดน้อยลง
•ใกล้เคียงกับการดัดแปลงเพื่อเปิดสู่ส่วนขยาย
โดยส่วนตัวแล้วหลักการออกแบบเหล่านี้จำเป็นต้องมีการฝึกฝนอย่างต่อเนื่องอย่างต่อเนื่องดังนั้นฉันจะไม่อธิบายพวกเขาที่นี่มากเกินไป ~
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น