ด้านล่างนี้ฉันจะใช้สองตัวอย่างเพื่อแสดงความสามารถในการปรับขนาดของ polymorphic ใน Java อย่างเต็มที่ ในฐานะโปรแกรมเมอร์ที่ยอดเยี่ยมคุณต้องเข้าใจความสามารถในการปรับขนาดของโปรแกรมซึ่งเอื้อต่อการพัฒนาโปรแกรมที่ตามมา
ตัวอย่างแรก:
ใช้เมนบอร์ดของคอมพิวเตอร์เป็นตัวอย่าง สำหรับเมนบอร์ดของคอมพิวเตอร์ที่เราคุ้นเคยมีหลายโมดูลการ์ดเครือข่ายและการ์ดเสียงในนั้นหรือไม่? หากคุณต้องการใช้ฟังก์ชั่นเหล่านี้คุณสามารถใช้เมนบอร์ดเพื่อเรียกใช้และให้กำลังการ์ดเครือข่ายและการ์ดเสียง แต่สิ่งนี้จะเกิดขึ้นได้อย่างไรในภาษาซอฟต์แวร์? คุณต้องเรียกใช้เมนบอร์ดก่อนจากนั้นการ์ดเสียงหรือการ์ดเครือข่ายทำงานหรือไม่? แต่ด้วยวิธีนี้การขยายตัวไม่สูงและการทำงานของการเรียกใช้การ์ดเสียงและการรันการ์ดเครือข่ายซ้ำแล้วซ้ำอีก ยิ่งไปกว่านั้นโมดูลจำนวนมากยังมีฟังก์ชั่นดังกล่าวดังนั้นคุณสามารถเรียกใช้โมดูลบนเมนบอร์ดได้ นี่คือหนึ่งในนั้น หากในวันนั้นเมื่อเทคโนโลยีได้รับการอัปเดตและโมดูลใหม่จะปรากฏขึ้นคุณจำเป็นต้องสร้างวัตถุโมดูลแล้วเรียกใช้อีกครั้งหรือไม่? เห็นได้ชัดว่านี่ไม่เอื้อต่อการพัฒนา อย่างไรก็ตามสำหรับปัญหานี้หลังจากผู้ผลิตเมนบอร์ดพูดคุยกับผู้ผลิตการ์ดเสียงและผู้ผลิตการ์ดเครือข่ายพวกเขาจะใช้อินเทอร์เฟซ PCI เพื่อเชื่อมต่อเมนบอร์ดและโมดูลในอนาคตซึ่งแก้ปัญหาการไม่สามารถใช้หรือนำกลับมาใช้ใหม่ได้อย่างสมบูรณ์ สิ่งนี้สอดคล้องกับความหลากหลายในชวาของเรา การใช้ polymorphism เราสามารถปรับปรุงความสามารถในการปรับขนาดของโปรแกรมได้อย่างมาก!
รหัสเฉพาะมีดังนี้!
/*ข้อกำหนด: ตัวอย่างคอมพิวเตอร์ที่ใช้งานคอมพิวเตอร์ทำงานตามเมนบอร์ด */อินเทอร์เฟซ PCI {โมฆะสาธารณะเปิด (); โมฆะสาธารณะปิด ();} เมนบอร์ดคลาส {โมฆะสาธารณะเรียกใช้ () {System.out.println ("Mainboard Run"); } โมฆะสาธารณะ USEPCI (PCI P) // PCI P = NETCARD () // จุดอ้างอิงอินเตอร์เฟสไปยังวัตถุคลาสย่อยของตัวเอง {ถ้า (p! = null) {p.open (); p.close (); }}} คลาส NetCard ใช้ PCI {โมฆะสาธารณะเปิด () {System.out.println ("NetCard Open"); } โมฆะสาธารณะปิด () {system.out.println ("NetCard Close"); วิธี(); }} คลาส SoundCard ใช้ PCI {โมฆะสาธารณะเปิด () {System.out.println ("SoundCard Open"); } โมฆะสาธารณะปิด () {system.out.println ("ปิดเสียงปิด"); }}/*เมนบอร์ดคลาส {public void run () {system.out.println ("mainboard run"); } โมฆะสาธารณะ usenetcard (NetCard C) {C.Open (); c.close (); }} คลาส Netcard {โมฆะสาธารณะเปิด () {system.out.println ("Netcard Open"); } โมฆะสาธารณะปิด () {system.out.println ("NetCard Close"); }}*/คลาส duotaidemo5 {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {mainboard mb = mainboard ใหม่ (); mb.run (); mb.usepci (null); mb.usepci (netcard ใหม่ ()); mb.usepci (SoundCard ใหม่ ()); -ตัวอย่างที่สอง:
ใช้ฐานข้อมูลทั่วไปเพื่ออธิบาย polymorphism สำหรับฐานข้อมูลที่เราคุ้นเคยในปัจจุบันมีโหมดการเชื่อมต่อฐานข้อมูลสองโหมด: การเชื่อมต่อ JDBC และ Hibernatelian เมื่อใช้ฐานข้อมูลมีการดำเนินการที่สำคัญสองประการคือการเชื่อมต่อและการปิด ในเวลานี้ให้ใช้อินเทอร์เฟซเพื่อห่อหุ้มการดำเนินการทั้งสองนี้และคุณต้องใช้โหมดการเชื่อมต่อเพื่อเปลี่ยนชื่อคลาสโดยตรง!
รหัสเฉพาะมีดังนี้!
/*ข้อกำหนด: การดำเนินการฐานข้อมูล ข้อมูลคือ: ข้อมูลผู้ใช้ 1. เชื่อมต่อกับฐานข้อมูล JDBC Hibernate2 ดำเนินการฐานข้อมูล C สร้าง R อ่าน U UPDATE D DELETE3 ปิดการเชื่อมต่อฐานข้อมูล */อินเทอร์เฟซ userinfodao {โมฆะสาธารณะเพิ่ม (ผู้ใช้ผู้ใช้); โมฆะสาธารณะ DELETE (ผู้ใช้ผู้ใช้);} คลาส userInfObyjdbc ใช้ userinofdao {โมฆะสาธารณะเพิ่ม (ผู้ใช้ผู้ใช้) {1, JDBC เชื่อมต่อกับฐานข้อมูล - 2. ใช้ SQL เพื่อเพิ่มคำสั่งเพื่อเพิ่มข้อมูล - 3 ปิดการเชื่อมต่อ } โมฆะสาธารณะลบ (ผู้ใช้ผู้ใช้) {1, JDBC เชื่อมต่อกับฐานข้อมูล - 2. ใช้คำสั่ง SQL เพิ่มเพื่อลบข้อมูล - 3 ปิดการเชื่อมต่อ }} คลาส userinfobyhibernate ใช้ userinfodao {โมฆะสาธารณะเพิ่ม (ผู้ใช้ผู้ใช้) {1, ไฮเบอร์เนตเชื่อมต่อกับฐานข้อมูล - 2. ใช้ SQL เพื่อเพิ่มคำสั่งเพื่อเพิ่มข้อมูล - 3 ปิดการเชื่อมต่อ } โมฆะสาธารณะลบ (ผู้ใช้ผู้ใช้) {1, ไฮเบอร์เนตเชื่อมต่อกับฐานข้อมูล - 2. ใช้คำสั่ง SQL เพิ่มเพื่อลบข้อมูล - 3 ปิดการเชื่อมต่อ }} คลาส dboperate {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// userinfobyjdbc ui = ใหม่ userinfobyjdbc (); // userinfobyhibernate ui = userinfobyhibernate ();); userInfodao ui = ใหม่ userinfobyhibernate (); ui.add (ผู้ใช้); UI.Delete (ผู้ใช้); -สรุป:
1. ตัวอย่างทั้งสองใช้อินเทอร์เฟซเพื่อสรุปการดำเนินการซ้ำ ๆ เพื่อให้โมดูลต่าง ๆ ใช้การดำเนินการเหล่านี้โดยตรงและอย่างรวดเร็วเราสามารถใช้การแปลงแบบ polymorphic ขึ้นไปโดยตรง (ดูบล็อกก่อนหน้าของฉัน) จากนั้นใช้การอ้างอิงคลาสแม่เพื่อเรียกมัน อย่างไรก็ตามไม่ว่าเทคโนโลยีจะได้รับการอัปเดตและโมดูลใหม่มีอยู่หรือมีการเปลี่ยนโมดูลที่มีอยู่เราสามารถใช้การอ้างอิงคลาสแม่เพื่อเรียกการดำเนินการทั่วไปโดยตรง!
2. คุณไม่จำเป็นต้องใช้อินเทอร์เฟซคุณสามารถใช้คลาสนามธรรมได้ อย่างไรก็ตามการใช้อินเทอร์เฟซจะปรับขนาดได้มากขึ้น หากคุณอัปเดตในอนาคตคุณสามารถเปลี่ยนอินเทอร์เฟซโดยตรงโดยไม่ต้องเปลี่ยนคลาสนามธรรม ประการที่สองการใช้อินเทอร์เฟซสามารถสืบทอดได้มากขึ้น! นี่เป็นสถานที่ที่สะดวก
บทความข้างต้น Java ใช้สองตัวอย่างเพื่อแสดงให้เห็นถึงความสามารถในการปรับขนาดของ polymorphisms ได้อย่างเต็มที่ นี่คือเนื้อหาทั้งหมดที่ฉันแบ่งปันกับคุณ ฉันหวังว่าคุณจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น