Các thói quen gọi lại dường như là kịch bản phổ biến nhất được đưa ra từ trước đến nay. Tuy nhiên, có nhiều người khác ...
Máy hữu hạn của tiểu bang nơi các phần tử của mảng (đa chiều) cho biết quy trình xử lý/xử lý trạng thái tiếp theo. Điều này giữ định nghĩa của FSM ở một nơi (mảng).
Bật tính năng và tắt tính năng có thể được thực hiện bằng cách sử dụng con trỏ hàm. Bạn có thể có các tính năng mà bạn muốn bật hoặc tắt tính năng tương tự nhưng những điều khác biệt. Thay vì populating và cluttering code của bạn với if-else xây dựng các biến kiểm tra, bạn có thể mã nó để nó sử dụng một con trỏ hàm, và sau đó bạn có thể bật/tắt các tính năng bằng cách thay đổi/gán con trỏ hàm. Nếu bạn thêm các biến thể mới, bạn không phải theo dõi tất cả các trường hợp if-else hoặc switch (và rủi ro bị thiếu); thay vào đó bạn chỉ cần cập nhật con trỏ hàm của mình để bật tính năng mới hoặc tắt tính năng cũ.
Giảm sự lộn xộn mã Tôi đã chạm vào điều này trong ví dụ trước. Ví dụ như ...
switch (a) {
case 0:
func0();
break;
case 1:
func1();
break;
case 2:
func2();
break;
case 3:
func3();
break;
default:
funcX();
break;
}
có thể được đơn giản hóa để ...
/* This declaration may be off a little, but I am after the essence of the idea */
void (*funcArray)(void)[] = {func0, func1, func2, func3, funcX};
... appropriate bounds checking on 'a' ...
funcArray[a]();
Có nhiều hơn nữa. Hi vọng điêu nay co ich.
Đây là C#, nhưng nó cũng đi vào C/C++ và tính thực tiễn của con trỏ hàm: http://stackoverflow.com/questions/667410/the-benefits-of-using-function-pointers – Algorhythm