2014-10-19 16 views
7

Tôi đã nghiên cứu cả hai nhưng không thể tìm thấy bất kỳ sự khác biệt thực sự nào, tôi có thiếu gì đó không? Trên web, một số người nói Observer chỉ nên xử lý một sự kiện trong khi lò phản ứng nhiều - nhưng tôi không coi đây là một sự khác biệt thực sự bởi vì một lò phản ứng có thể được nhìn thấy giống như nhiều Observer. Có bất kỳ sự khác biệt hoặc tên mới hơn Reactor chỉ là mát mẻ hơn Observer?Mẫu quan sát và mẫu lò phản ứng

Cảm ơn, Carlo

+2

Tôi đồng ý theo nhiều cách phản ứng là một tên khác cho mẫu quan sát – kenny

Trả lời

7

Các Reactor Pattern sử dụng một trình xử lý dịch vụ trung gian mà demultiplexes yêu cầu và công văn để xử lý chính xác.

Observer Pattern yêu cầu đăng ký "Người quan sát" với chủ đề, sau đó đẩy thông báo tới tất cả người quan sát đã đăng ký khi sự kiện xảy ra.

Sự khác biệt quan trọng là Mô hình lò phản ứng xử lý việc gửi đi với trình xử lý yêu cầu trung tâm, trong khi Mẫu quan sát cho phép người tiêu dùng nói chuyện trực tiếp với nhà sản xuất.

Trong thực tế, Mẫu quan sát có thể cung cấp sự linh hoạt hơn trong đăng ký động và hủy đăng ký người tiêu dùng. Trong các ứng dụng đồng thời rất cao, nó cũng cung cấp lợi ích của việc không có một điều phối trung gian duy nhất tắc nghẽn thông lượng. Các Lapsed Listener Problem cũng là có liên quan, xảy ra khi người tiêu dùng quên de-đăng ký với chủ đề khi họ không còn muốn được thông báo. Trong các ngôn ngữ thu thập rác, điều này thường ngăn không cho GC thu thập các trình xử lý sự kiện này và do đó làm rò rỉ chúng và bất kỳ tham chiếu nào mà chúng nắm giữ. Điều này thường không thể xảy ra với Mẫu Lò phản ứng, thường không sử dụng đăng ký động (mặc dù nó có thể về mặt lý thuyết).

+1

Lò phản ứng giải quyết vấn đề khá cụ thể cho ** máy chủ **: "ứng dụng máy chủ phải phân tách và gửi mỗi yêu cầu đến nhà cung cấp dịch vụ tương ứng." Observer là một mô hình tổng quát hơn để tách rời các đối tượng khỏi các nhà quan sát của họ. – Fuhrmanator

Các vấn đề liên quan