Đôi khi tôi bắt gặp các API kiểu trung tâm thông báo này, ví dụ: Ca cao NSNotificationCenter: http://developer.apple.com/l Library / mac / #ốc /
Thông thường các API này cung cấp một điểm truy cập toàn cầu mà bạn đăng ký hoặc phát các tin nhắn / sự kiện. Tôi nghĩ đây là một vấn đề vì nó khuyến khích kiến trúc chương trình phẳng và không có cấu trúc, trong đó các phụ thuộc không rõ ràng trong API, nhưng ẩn trong mã nguồn. Bạn không bị buộc phải suy nghĩ về quyền sở hữu và phân cấp đối tượng, nhưng có thể làm cho bất kỳ đối tượng nào trong chương trình của bạn dẫn đến bất kỳ mã nào ở bất cứ nơi nào được gọi. Nhưng có lẽ đây là một điều tốt?
Liệu mô hình này thường khuyến khích thiết kế chương trình tốt hay xấu, và tại sao lại như vậy? Nó làm cho mã khó hơn hoặc dễ kiểm tra hơn?
Hãy tha thứ cho tôi nếu câu hỏi này quá mơ hồ hoặc rộng. Tôi đang cố gắng che giấu những hậu quả tiềm tàng của việc sử dụng rộng rãi API như thế này và các cách khác nhau mà bạn có thể sử dụng.
Chỉnh sửa: Tôi đoán vấn đề lớn nhất của tôi với mẫu này là API "nói dối" về các phụ thuộc và khớp nối đối tượng và có thể được minh họa bằng ví dụ này:
myObj = new Foo();
myOtherObj = new Bar();
print myOtherObj.someValue; // prints 0
myObj.doSomething();
print myOtherObj.someValue; // prints 1, unexpectedly, because I never indicated that these objects had anything to do with each other