Đây thường là thứ mà bạn sẽ phải tự phơi bày, vì vậy có, nó sẽ phụ thuộc vào ngôn ngữ mà hệ thống của bạn được viết (mặc dù thường có thể viết trình bao bọc cho các ngôn ngữ khác).
Nếu, ví dụ, bạn có một chương trình được viết bằng C, cho Windows, các plugin sẽ được viết cho chương trình của bạn dưới dạng tệp DLL. Khi chạy, bạn sẽ tải các DLL này theo cách thủ công và hiển thị một số giao diện cho chúng. Ví dụ, các DLL có thể trưng ra một hàm gimme_the_interface()
có thể chấp nhận một cấu trúc chứa đầy các con trỏ hàm. Những con trỏ chức năng này sẽ cho phép DLL thực hiện cuộc gọi, đăng ký callbacks, vv
Nếu bạn ở trong C++, bạn sẽ sử dụng hệ thống DLL, ngoại trừ bạn có thể vượt qua một đối tượng thay vì cấu trúc. thực hiện một giao diện cung cấp chức năng (hoàn thành điều tương tự như cấu trúc, nhưng ít xấu xí hơn). Đối với Java, bạn sẽ tải các tệp lớp theo yêu cầu thay vì các tệp DLL, nhưng ý tưởng cơ bản sẽ giống nhau.
Trong mọi trường hợp, bạn sẽ cần xác định giao diện chuẩn giữa mã và plugin để bạn có thể khởi chạy plugin và các plugin có thể tương tác với bạn.
P.S. Nếu bạn muốn xem ví dụ điển hình về hệ thống plugin C++, hãy xem foobar2000 SDK. Tôi đã không sử dụng nó trong một thời gian, nhưng nó được sử dụng để thực sự được thực hiện tốt. Tôi cho rằng nó vẫn là.
Nguồn
2008-08-11 20:00:09
Vâng, tôi sợ nó sẽ là một câu trả lời như thế này. Tuy nhiên, ngược lại là nó có nghĩa là bạn có toàn quyền kiểm soát những plugin nào tôi có thể làm. – kaybenleroll