Sự khác biệt lớn giữa các nhà quan sát và gọi lại là gì? Khi nào và ở đâu để sử dụng cái nào?Sự khác biệt lớn giữa các nhà quan sát và các cuộc gọi lại là gì?
Trả lời
Đó là về việc tách mối quan tâm.
Các nhà quan sát cho phép bạn tính toán mã không thực sự thuộc về các mô hình. Ví dụ, một mô hình User
có thể có một cuộc gọi lại gửi email xác nhận đăng ký sau khi bản ghi người dùng được lưu, nhưng bạn thực sự không muốn mã này trong mô hình vì nó không liên quan trực tiếp đến mục đích của mô hình.
Các nhà quan sát cho phép bạn có sự tách biệt rõ ràng bởi vì bạn không có tất cả mã gọi lại đó trong các mô hình của mình. Các nhà quan sát phụ thuộc vào một mô hình (hoặc các mô hình), không phải là cách khác.
Đối với tôi, đó là điều tương tự. Nhưng tôi thích gọi lại thay vì Observer.
Người quan sát gọi lại nhưng trong mô hình riêng biệt.
Gọi lại nằm trong mô hình. Vì vậy, bạn thấy có callback và bạn có thể hack nó.
Điều tôi biết rất nhiều về việc giữ cho mô hình của bạn gọn gàng một cách hợp lý. Vì vậy, khi bạn tìm thấy mô hình của bạn nhận được ridiculously dài nó có thể là thời gian để refactor nó để sử dụng một người quan sát.
Từ POW kiến trúc nghiêm ngặt (như được ghi trong câu trả lời của John) nó là khoảng separation of responsibilities nhưng nếu đó là một điều đơn giản, tôi thích gắn nó vào mô hình anyway.
Về mặt kỹ thuật, thực tế không có sự khác biệt.
- 1. Sự khác biệt giữa móc và gọi lại là gì?
- 2. Sự khác biệt hiệu suất giữa các khối và gọi lại là gì?
- 3. Sự khác nhau giữa các trình xử lý sự kiện và các cuộc gọi lại
- 4. Sự khác biệt giữa "gọi" và "gọi" là gì?
- 5. Sự khác biệt giữa Caching và Memoization là gì?
- 6. Sự khác biệt giữa Mẫu quan sát và Phương pháp tiếp cận theo hướng sự kiện
- 7. SQLAlchemy: Sự khác biệt giữa flush() và commit() là gì?
- 8. Sự khác biệt giữa các sự kiện Window.Loaded và Window.ContentRendered là gì
- 9. Trong Ember.js, sự khác biệt giữa [] và Ember.A ([]) là gì?
- 10. Sự khác biệt giữa while (true) và loop là gì?
- 11. Sự khác biệt giữa các quy ước gọi C và C++ là gì?
- 12. Sự khác biệt giữa nút quay lại và kết thúc là gì?
- 13. std :: sự khác biệt về bản đồ giữa chỉ mục và các cuộc gọi chèn
- 14. Sự khác biệt giữa Cơ sở dữ liệu Quan hệ và Không Quan hệ là gì?
- 15. Sự khác biệt giữa "new A()" và "A.newInstance()" là gì?
- 16. Sự khác nhau giữa NSNotificationCenter và kỹ thuật Quan sát giá trị khóa là gì?
- 17. Sự khác biệt giữa (string [] args) và System.Environment.CommandLine là gì?
- 18. Sự khác biệt giữa mẫu mặt tiền và mẫu nhà máy abstarct là gì?
- 19. Sự khác biệt giữa RadGrid.Rebind() và RadGrid.MasterTableView.Rebind() là gì?
- 20. Sự khác biệt giữa đúc và co giật là gì?
- 21. Sự khác biệt giữa is_a và instanceof là gì?
- 22. Sự khác biệt giữa Gọi() và BeginInvoke()
- 23. Sự khác biệt lớn nhất giữa fopen và curl là gì?
- 24. Sự khác biệt giữa gói android.opengl và javax.microedition.khronos.opengles là gì?
- 25. SBT - Sự khác biệt giữa tên và id là gì?
- 26. Sự khác biệt giữa quan sát lạnh trong RX và bình thường Có thể đếm được
- 27. Sự khác biệt giữa "1.0f" và "1.f" là gì?
- 28. Sự khác biệt thực tế giữa các biểu mẫu và macro đặc biệt là gì?
- 29. Sự khác biệt giữa các thử nghiệm và thông số kỹ thuật là gì?
- 30. Các nhà quan sát đường ray - Khi nào và khi nào không sử dụng các nhà quan sát trong Rails