ข้อต่อหลวม 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 ชั่วโมง

เตรียมความพร้อมสู่อาชีพแห่งอนาคต

สมัครเรียนวิทยาศาสตรมหาบัณฑิตสาขาวิชาแมชชีนเลิร์นนิง & AI