การแต่งงานกันแบบหลวม ๆนั้นเป็นการพึ่งพาทางอ้อมระหว่างโมดูลกับวิธีที่พวกเขาสามารถพัฒนาขึ้นได้
โดยทั่วไปเมื่อมีระบบเชื่อมโยงอย่างแน่นหนาโมดูล / วัตถุที่แตกต่างกันจะมีพฤติกรรมที่เฉพาะเจาะจงมากซึ่งถือว่าพฤติกรรมนั้นของวัตถุต่อพ่วง วัตถุดังกล่าวเชื่อมโยง / เชื่อมโยงกับพฤติกรรมของโมดูลอื่นและไม่สามารถนำมาใช้อีกครั้งในการแยกหรือในบริบทอื่น ๆ
โมดูลดังกล่าวแม้ว่าจะรับผิดชอบหน้าที่การทำงานของแต่ละบุคคลไม่สามารถพัฒนาได้อย่างอิสระหรือไม่สามารถพัฒนาได้
ตัวอย่าง:
สมมติว่าคุณมี 3 วัตถุShape( วัตถุ
จำลอง) และCanvas(องค์ประกอบ UI) ตอนนี้
สมมติว่าเมธอดshape.draw(Canvas)จะวาดวัตถุบนระนาบที่ให้มาโดยระนาบของผืนผ้าใบ
ตอนนี้บางครั้งหน้าต่างได้รับการคุ้มครองบางส่วนและปรับขนาด ในกรณีเช่นนี้วิธีการข้างต้นอาจทำอะไรแบบนี้
shape::draw(Canvas) {
Rect.WindowLeft = Canvas.GetWindowRect.getLeftOffset();
Rect.LeftPixel = Canvas.GetWindowRect.pixels() + Rect.WindowLeft;
.... // like this get all co-ordinates.
draw_instance(Rect); // This will draw the actual shape.
}
โดยทั่วไปฟังก์ชั่นการดึงที่นี่จะจับสี่เหลี่ยมที่จำเป็นต้องวาด นี่เป็นเรื่องง่ายที่จะเข้าใจ (ผู้คนอาจเรียกรหัสง่าย ๆนี้) อย่างไรก็ตามนี่เป็นรหัสคู่ที่ดีมาก
ลองนึกภาพสถานการณ์:
- เกิดอะไรขึ้นถ้ากลไกของการถือผ้าใบ windows ไม่มีสี่เหลี่ยมอีกต่อไป?
- สิ่งที่ถ้ามีการชดเชยเพิ่มเติมที่ช่วยผ้าใบซึ่งเป็นส่วนตัว ?
- จะเกิดอะไรขึ้นถ้าแอปพลิเคชันอื่นต้องการรูปร่างที่เหมือนกัน แต่ไม่มีหน้าต่าง GUI อีกต่อไป (ตัวอย่างเช่นมันกำลังสร้างรูปภาพและบันทึกในไฟล์)
สาเหตุของปัญหาคือว่าวัตถุshape รู้และด้วยเหตุนี้คู่แน่นCanvasกับ
สิ่งที่พึงปรารถนาคือชุดของพิกเซลจะถูกกำหนดให้เป็นรูปร่างตามที่เขียน shapeไม่ควรมี (แม้โดยปริยาย) ความรู้เกี่ยวกับการที่พิกเซลที่เขียนจริง