ข้อต่อหลวม vs ข้อต่อแน่นใน Java: ความแตกต่างระหว่างข้อต่อหลวมและข้อต่อแน่น
เผยแพร่แล้ว: 2021-05-02สารบัญ
บทนำ
Java เป็น ภาษา โปรแกรมเชิงวัตถุ ที่ใช้คลาสและอ็อบเจ็กต์ การจับคู่มีบทบาทสำคัญใน Java หากคุณทำงานกับคลาสและอ็อบเจ็กต์ในภาษา Java การมีเพศสัมพันธ์หมายถึงระดับความรู้ที่องค์ประกอบหนึ่งใน Java มีเกี่ยวกับองค์ประกอบอื่น เป็นระดับการใช้งานของคลาสหนึ่งกับอีกคลาสหนึ่ง บทความนี้จะให้ความรู้ความเข้าใจอย่างลึกซึ้งเกี่ยวกับ coupling ใน Java ซึ่งเป็นประเภทที่มีตัวอย่าง
การมีเพศสัมพันธ์ใน Java คืออะไร?
การมีเพศสัมพันธ์ไม่ได้เป็นเพียงการพึ่งพาคลาสหนึ่งกับอีกคลาสหนึ่ง หากอ็อบเจ็กต์หนึ่งในโค้ดใช้อ็อบเจ็กต์อื่นในโปรแกรม จะเรียกว่า Loose coupling ใน Java ในการจับคู่ สองคลาสหรืออ็อบเจ็กต์ทำงานร่วมกันและทำงานร่วมกันเพื่อทำงานที่กำหนดไว้ล่วงหน้าให้เสร็จสมบูรณ์ หมายความว่าองค์ประกอบหนึ่งต้องการองค์ประกอบอื่นเพื่อให้ฟังก์ชันสมบูรณ์ เรียกว่าการทำงานร่วมกันเมื่อคลาสหนึ่งเรียกตรรกะของอีกคลาสหนึ่ง
ประเภทของข้อต่อคืออะไร?
Coupling ใน Java มีสองประเภท
ข้อต่อหลวมใน Java
เมื่อสองคลาส โมดูล หรือส่วนประกอบมีการพึ่งพาซึ่งกันและกันต่ำ จะเรียกว่า การมีเพศสัมพันธ์แบบหลวม ๆ ใน Java การมีเพศสัมพันธ์แบบหลวมใน Java หมายความว่าคลาสนั้นเป็นอิสระจากกัน ความรู้เดียวที่คลาสหนึ่งมีเกี่ยวกับคลาสอื่นคือสิ่งที่คลาสอื่นเปิดเผยผ่านอินเทอร์เฟซในการมีเพศสัมพันธ์แบบหลวม หากสถานการณ์ต้องการวัตถุที่จะใช้จากภายนอก เรียกว่าเป็น สถานการณ์ การมีเพศสัมพันธ์ที่หลวม
ในที่นี้ อ็อบเจ็กต์หลักไม่ค่อยใช้อ็อบเจ็กต์ และสามารถเปลี่ยนอ็อบเจ็กต์จากแหล่งภายนอกได้อย่างง่ายดาย การ มีเพศสัมพันธ์แบบหลวมใน Java มีขอบเหนือการมีเพศสัมพันธ์ที่แน่นหนาเนื่องจากช่วยลดการบำรุงรักษาและความพยายามของโค้ด การเปลี่ยนแปลงในคลาสหนึ่งไม่ต้องการการเปลี่ยนแปลงในคลาสอื่น และสองคลาสสามารถทำงานได้อย่างอิสระ
ตัวอย่างที่ 1: ลองนึกภาพคุณได้สร้างสองคลาส A และ B ในโปรแกรมของคุณ คลาส A เรียกว่าปริมาตร และคลาส B จะประเมินปริมาตรของทรงกระบอก หากคุณเปลี่ยนวอลุ่มคลาส A คุณจะไม่ถูกบังคับให้เปลี่ยนคลาส B สิ่งนี้เรียกว่า การมีเพศสัมพันธ์ แบบ หลวมใน Java เมื่อคลาส A ต้องการการเปลี่ยนแปลงในคลาส B คุณจะต้องมีคัปปลิ้งที่แน่นหนา
รหัส
แพ็คเกจคลายตัว; ระดับเสียงของคลาส { โมฆะคงที่สาธารณะหลัก (สตริง args []) { กระบอกสูบ b = กระบอกสูบใหม่ (25, 25, 25); System.out.println(b.getVolume()); } } กระบอกสูบชั้นสุดท้าย { ปริมาณ int ส่วนตัว; รูปทรงกระบอก (ความยาว int ความกว้าง int ความสูง int) { this.volume = ยาว * กว้าง * สูง; } int สาธารณะ getVolume () { ปริมาณการส่งคืน; } } |
คำอธิบาย: ในตัวอย่างข้างต้น คลาส A และคลาส B เป็นคู่กันอย่างหลวมๆ
ตัวอย่าง 2
นำเข้า java.io.IOException; อินเทอร์เฟซอาหาร { การแสดงโมฆะสาธารณะ (); } คลาสอิตาลี { อาหาร s; อาหารอิตาเลียนสาธารณะ (อาหาร){ this.s = s; } การแสดงโมฆะสาธารณะ (){ System.out.println("อิตาลี"); s.display(); } } ชั้นเรียนภาษาจีนใช้อาหาร { ภาษาจีนสาธารณะ (){} การแสดงโมฆะสาธารณะ (){ System.out.println("ภาษาจีน"); } } คลาสเม็กซิกันดำเนินการอาหาร { สาธารณะชาวเม็กซิกัน (){} การแสดงโมฆะสาธารณะ (){ System.out.println("เม็กซิกัน"); } } การทดสอบระดับสาธารณะ { โมฆะคงที่สาธารณะหลัก (สตริง args []) พ่น IOException { อาหาร b = จีนใหม่ (); อาหาร c = เม็กซิกันใหม่ (); ภาษาอิตาลี a = ภาษาอิตาลีใหม่(b); //a.display() จะพิมพ์ภาษาอิตาลีและภาษาจีน a.display(); อิตาลี a1 = ภาษาอิตาลีใหม่ (c); //a.display() จะพิมพ์ภาษาอิตาลีและเม็กซิกัน a1.display(); } } |
เอาท์พุต
ภาษาอิตาลี ชาวจีน ภาษาอิตาลี เม็กซิกัน |
คำอธิบาย: ในตัวอย่างข้างต้น ทั้งสามคลาสมีความสัมพันธ์กันอย่างหลวมๆ มันหมายความว่าคุณสามารถใช้อินเทอร์เฟซอาหารเพื่อให้บริการโดยการฉีดบริการที่นำมาใช้
รับ ปริญญาวิศวกรรมซอฟต์แวร์ ออนไลน์จากมหาวิทยาลัยชั้นนำของโลก รับโปรแกรม PG สำหรับผู้บริหาร โปรแกรมประกาศนียบัตรขั้นสูง หรือโปรแกรมปริญญาโท เพื่อติดตามอาชีพของคุณอย่างรวดเร็ว
ข้อต่อแน่น
เมื่อสองคลาสต้องพึ่งพาซึ่งกันและกันอย่างมาก เรียกว่าการคัปปลิ้งแน่น เกิดขึ้นเมื่อชั้นเรียนมีความรับผิดชอบมากเกินไปหรือเมื่อการเปลี่ยนแปลงในชั้นเรียนหนึ่งต้องการการเปลี่ยนแปลงในชั้นเรียนอื่น ในการมีเพศสัมพันธ์อย่างแน่นหนา วัตถุ (วัตถุหลัก) จะสร้างวัตถุอื่น (วัตถุลูก) สำหรับการใช้งาน ถ้า parent object รู้เพิ่มเติมเกี่ยวกับวิธีการนำ object Object มาใช้ เราสามารถพูดได้ว่า parent Object กับ child นั้นเชื่อมโยงกันอย่างแน่นหนา
ตัวอย่าง: ลองนึกภาพคุณได้สร้างสองคลาส A และ B ในโปรแกรมของคุณ คลาส A เรียกว่าปริมาตร และคลาส B จะประเมินปริมาตรของทรงกระบอก หากคุณทำการเปลี่ยนแปลงใดๆ ในโวลุ่ม การเปลี่ยนแปลงเดียวกันจะสะท้อนให้เห็นในคลาส B ดังนั้น เราสามารถพูดได้ว่าคลาสทั้งสองนั้นพึ่งพาซึ่งกันและกันอย่างมากและมีความสัมพันธ์กันอย่างแน่นแฟ้น
รหัส
การประกบแน่นของบรรจุภัณฑ์; ระดับเสียงของคลาส { โมฆะคงที่สาธารณะหลัก (สตริง args []) { กระบอกสูบ b = กระบอกสูบใหม่ (15, 15, 15); System.out.println(b.volume); }} กระบอกคลาส { ปริมาณ int สาธารณะ; รูปทรงกระบอก (ความยาว int ความกว้าง int ความสูง int) { this.volume = ยาว * กว้าง * สูง; }} |
เอาท์พุต
3375 |
คำอธิบาย: ในตัวอย่างข้างต้น คลาส A และคลาส B ถูกผูกไว้ด้วยกันและทำงานร่วมกันเป็นทีม
ความแตกต่างระหว่างข้อต่อหลวมและข้อต่อแน่น
ตารางต่อไปนี้แสดงรายการความแตกต่างระหว่าง คัปปลิ้ง แบบหลวมกับคัปปลิ้ งแน่น
ข้อต่อหลวม | ข้อต่อแน่น |
วัตถุเป็นอิสระจากกัน | วัตถุหนึ่งขึ้นอยู่กับวัตถุอื่นเพื่อทำงานให้เสร็จ |
การทดสอบที่ดีขึ้น | ความสามารถในการทดสอบไม่ได้ดีเท่ากับการ มีเพศสัมพันธ์ แบบ หลวมใน Java |
การสื่อสารแบบอะซิงโครนัส | การสื่อสารแบบซิงโครนัส |
ประสานงานน้อย. การสลับรหัสระหว่างสองคลาสไม่ใช่เรื่องง่าย | ให้การประสานงานที่ดีขึ้น คุณสามารถสลับรหัสระหว่างสองวัตถุได้อย่างง่ายดาย |
ไม่มีแนวคิดของอินเทอร์เฟซ | ปฏิบัติตามหลักการของ GOF เพื่อเชื่อมต่อ |
ข้อมูลไหลน้อยลง | ข้อมูลเพิ่มเติม |
เปลี่ยนแปลงได้มาก | ไม่มีความสามารถในการเปลี่ยนแปลง |
บทสรุป
โดยสรุป คัปป ลิ้งแบบหลวมใน Java ดีกว่ามากเมื่อเทียบกับคัปปลิ้งแบบแน่น ให้โค้ดมีความยืดหยุ่นและนำกลับมาใช้ใหม่ได้ดีกว่า เนื่องจากทั้งสองคลาสนั้นแยกจากกัน มันทำให้การเปลี่ยนแปลงในโค้ดทำได้ง่ายมาก นอกจากนี้ยังให้การทดสอบที่ดีขึ้น
หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับการพัฒนาซอฟต์แวร์ โปรดดูวิทยาศาสตรมหาบัณฑิตสาขาวิทยาการคอมพิวเตอร์จาก LJMU ซึ่งออกแบบมาสำหรับมืออาชีพด้านการทำงานและเสนอโครงการและงานที่มอบหมายมากกว่า 12 โครงการ 1 ต่อ 1 พร้อมที่ปรึกษาในอุตสาหกรรม การเรียนรู้มากกว่า 500 ชั่วโมง