2010-07-01 27 views
7

Ai đó có thể chỉ ra sự khác biệt chính giữa hai loại này?Mô hình hòa giải vs Xuất bản/Đăng ký

Dường như, ít nhất là khái niệm, cả hai đều liên quan rất chặt chẽ. Nếu tôi có nguy cơ đoán, tôi sẽ nói rằng phương pháp xuất bản/đăng ký là tập con của mẫu hòa giải (vì người hòa giải không nhất thiết phải được sử dụng theo cách xuất bản/đăng ký, nhưng sau này dường như yêu cầu một người hòa giải vật). Đó có phải là bất cứ nơi nào gần với nó?

Trả lời

11

Cách tôi mô tả sự khác biệt là trong trung gian hòa giải bạn có thể quan tâm nếu ứng dụng cuối nhận được thông báo. Vì vậy, bạn sử dụng điều này để đảm bảo ai đang nhận được tin nhắn. Trong khi đó với pub/sub bạn chỉ xuất bản tin nhắn của bạn. Nếu có bất kỳ người đăng ký nào họ sẽ nhận được nhưng bạn không quan tâm.

2

Theo this page, mô hình đăng ký xuất bản là triển khai mẫu hòa giải.

Chỉnh sửa

Tôi cần lưu ý rằng các mẫu thiết kế được gọi là "mẫu" chính xác bởi vì sẽ có sự khác biệt giữa mỗi lần triển khai. Họ không phải là một tập hợp các hình thức quyết định, kinh điển như họ là một tập hợp các quan sát về cách mọi người đã viết phần mềm. Vì vậy, thực sự không có cách nào để thiết kế "nghiêm chỉnh" tuân theo một mẫu thiết kế.

0

Tôi nghĩ một điểm chính của sự khác biệt là bối cảnh của vấn đề.

Mặc dù là một vấn đề có thể được giải quyết với một trong hai mô hình, những mối quan tâm thực sự là:

1: "Bao nhiêu thay đổi để mang lại bởi những sự kiện đang phụ thuộc vào bối cảnh chung?"

2: "Người nghe sẽ thay đổi thường xuyên như thế nào?" Các trường hợp cổ điển cho mô hình hòa giải tốt nhất minh họa điều này, nơi bạn có một giao diện người dùng phức tạp với rất nhiều thành phần và cập nhật trên mỗi thành phần có sự phụ thuộc lẫn nhau phức tạp về trạng thái của các thành phần tương tự khác.

Mặc dù bạn có thể giải quyết vấn đề này với mẫu pub/sub; trong đó các thành phần của bạn lắng nghe các sự kiện và chứa logic cần thiết để cập nhật, đối tượng ngữ cảnh (cùng với sự kiện) mang theo tất cả các thông tin cần thiết. Ở đây, lợi thế rõ ràng là sự đóng gói thích hợp của logic liên quan đến một thành phần bên trong chính nó. Nhược điểm là nếu các thành phần như vậy được cho là thay đổi thường xuyên thì bạn phải nhân rộng logic này đầy đủ trong mỗi thành phần mới mà bạn mang lại.

Để sử dụng một trung gian hòa giải là giới thiệu một lớp khác và trừu tượng hơn nữa từ các thành phần. Những thành phần này trở nên mỏng hơn vì chúng chỉ đối phó với biểu diễn (giao diện và cảm nhận UI) do đó, trở nên rất dễ thay đổi. Vấn đề duy nhất tôi có với phương pháp này là logic cập nhật bây giờ dường như tràn vào các thành phần khác và bất kỳ sự cập nhật nào của hệ thống sẽ yêu cầu một thay đổi thành phần và trình trung gian nếu hành vi thành phần cũng thay đổi.

Điều đó đối với tôi là tình huống khó xử/thương mại chính mà chúng tôi cần giải quyết. Xin vui lòng sửa tôi nếu tôi không có bất cứ điều gì một cách chính xác.

1

Việc triển khai có thể giống nhau, nhưng về mặt logic thì chúng khác nhau (Sự khác biệt rất đơn giản, nhưng khó thấy). Tôi sẽ giải thích nó theo cách đơn giản dưới đây.

Về mặt chi tiết, khi triển khai mẫu Xuất bản/Đăng ký, bạn sẽ có ít nhất một đối tượng có phương pháp "xuất bản" và "đăng ký". Nhưng bạn cũng có thể có nhiều người trong số họ, vì vậy việc giao tiếp giữa các thành phần không được tập trung theo định nghĩa.

Khi triển khai mẫu hòa giải, bạn sẽ có JUST ONE đối tượng với các phương thức "xuất bản" và "đăng ký". Vì vậy, giao tiếp được "tập trung" theo định nghĩa.

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