Skip to main content

Ràng buộc động là gì?

Trong khoa học máy tính, ràng buộc tên là sự liên kết của một định danh, chẳng hạn như một hàm hoặc tên biến, với một phần của mã hoặc dữ liệu.Trong kịch bản phổ biến nhất, liên kết tĩnh, ánh xạ này được biết đến tại thời điểm biên dịch.Trong liên kết động, đối tượng được ánh xạ bởi một hàm không được biết đến tại thời điểm biên dịch và chỉ có thể được xác định trong thời gian chạy chương trình.Vì lý do này, ràng buộc động cũng được gọi là ràng buộc muộn.Mặc dù liên kết động cung cấp tính linh hoạt không có sẵn với liên kết tĩnh, nhưng nó cũng đòi hỏi nhiều chi phí hiệu suất hơn liên kết tĩnh. Liên kết động có liên quan chặt chẽ với tính đa hình, là một phần của lập trình hướng đối tượng.Đa hình cho phép cùng một tên phương pháp được thực hiện theo những cách khác nhau.Nếu mã không được viết theo cách mà phương thức chính xác không thể được xác định tại thời điểm biên dịch, thì phải sử dụng liên kết động. Ví dụ, một lớp hình dạng có thể có một phương thức gọi là getarea, vì mọi hình dạng đều có một khu vực.Tuy nhiên, một lớp con của hình dạng hình dạng sẽ thực hiện GetArea khác với cách một lớp con vuông.Do đó, nếu một đối tượng mới được tạo bằng hình dạng và nếu mã gọi phương thức getArea trên hình đó, trình biên dịch sẽ không có cách nào để biết liệu hình dạng sẽ kết thúc là một vòng tròn hay hình vuông, và do đó nó sẽ không biếtmà phương thức getArea để gọi.Đây là một ví dụ về liên kết động, bởi vì phương pháp GetArea chính xác sẽ chỉ được ánh xạ vào thời gian chạy, sau khi chương trình biết loại hình dạng của đối tượng.được dùng.Trong ví dụ hình dạng, mã có thể được viết để tránh liên kết động bằng cách sử dụng rõ ràng logic này: nếu hình dạng là một vòng tròn, thì hãy gọi phương thức Circles GetArea;Khác, nếu hình dạng là một hình vuông, hãy gọi phương thức GetArea cụ thể cho hình vuông.Lợi ích của ràng buộc động là mã sạch hơn và có thể duy trì hơn so với phương án thay thế.Trong ví dụ ràng buộc tĩnh, có sự trùng lặp mã và mã phải được cập nhật bất cứ lúc nào một loại hình dạng mới được thêm vào. Các nhược điểm của liên kết động là hiệu suất và an toàn.Trong ràng buộc tĩnh, trình biên dịch biết chính xác mã sẽ gọi và có thể tối ưu hóa mã để chạy hiệu quả hơn.An toàn loại có thể là một vấn đề bởi vì, trong một số triển khai ràng buộc động, một phương thức có thể được gọi trên một đối tượng không hỗ trợ phương thức.Ví dụ, phương thức GetArea có thể được gọi trên một đối tượng không phải là hình dạng và do đó không có phương thức getArea, có thể dẫn đến lỗi thời gian chạy.Liên kết tĩnh sẽ ngăn chặn kịch bản này bằng cách tăng lỗi biên dịch.