Vấn đề rất đơn giản. Một đối tượng cần phải thông báo cho một số sự kiện mà các nhà quan sát có thể quan tâm.Tương đương với các sự kiện .NET trong Ruby là gì?
Khi tôi ngồi xác thực một thiết kế mà tôi đã nấu ngay bây giờ trong Ruby chỉ để xác nhận nó .. Tôi thấy mình bị bối rối như thế nào để thực hiện các sự kiện đối tượng. Trong. Net này sẽ là một lớp lót .. Net cũng có phương pháp xử lý chữ ký xử lý, vv. ví dụ.
// Object with events
public delegate void HandlerSignature(int a);
public event HandlerSignature MyEvent;
public event HandlerSignature AnotherCriticalEvent;
// Client
MyObject.MyEvent += new HandlerSignature(MyHandlerMethod); // MyHandlerMethod has same signature as delegate
Có mô-đun EventDispatcher hoặc thứ gì đó mà tôi thiếu mà tôi có thể đeo vào lớp Ruby không? Hy vọng cho một câu trả lời phù hợp với nguyên tắc của Ruby ít ngạc nhiên nhất. Sự kiện sẽ là tên của sự kiện cộng với hàng đợi của các đối tượng [observer, methodName] cần được gọi khi sự kiện diễn ra.
Không hẳn .. Điều này có vẻ là việc triển khai Mẫu thiết kế quan sát. Những gì tôi cần là cho đối tượng lò hơi để lộ nhiều sự kiện như WaterExhausted, Started, vv và khách hàng đăng ký với các trình xử lý của họ (không bị ràng buộc với một phương thức 'cập nhật') – Gishu