Tôi nghĩ rằng bài báo này hơi cũ vì khi tôi đọc nó, đây thực sự không phải là một ý tưởng không chính thống hay mới. Ý tưởng này được trình bày dưới dạng một mẫu riêng biệt khi nó thực sự chỉ là một triển khai Observer đơn giản. Nghĩ lại những gì tôi đang làm lúc đó, tôi nhớ làm việc dựa trên logic để ngồi sau một giao diện hơi phức tạp với một số bảng khác nhau với dữ liệu phụ thuộc lẫn nhau. Người dùng có thể thay đổi giá trị và / hoặc chạy một thói quen tối ưu hóa và dựa trên những hành động đó, các sự kiện được tạo ra mà UI sẽ lắng nghe và cập nhật khi cần. Có một số vấn đề trong quá trình phát triển trong đó một số bảng nhất định sẽ không cập nhật khi cần. Cách khắc phục (nằm trong thiết kế) là tạo các sự kiện từ các sự kiện khác. Cuối cùng, đến lúc mọi thứ đã hoạt động tốt, hầu như mọi thay đổi dẫn đến tất cả các bảng để làm mới. Tất cả sự phức tạp của việc cố gắng cô lập khi một bảng điều khiển nhất định cần làm mới là vô ích. Và dù sao nó cũng không thành vấn đề. Đó là một tối ưu hóa sớm. Tôi sẽ tiết kiệm được rất nhiều thời gian và công sức bằng cách đơn giản thu gọn tất cả vào một sự kiện duy nhất làm mới mọi thứ.
Có vô số hệ thống được thiết kế theo kiểu "sửa chữa mọi thứ" hoặc làm mới mọi thứ. Hãy nghĩ về tất cả các giao diện CRUD thêm / cập nhật một hàng và sau đó yêu cầu DB. Đây không phải là một cách tiếp cận kỳ lạ, nó chỉ là giải pháp không thông minh rõ ràng. Bạn phải nhận ra rằng vào năm 2003, đó là chiều cao của 'cơn sốt mẫu'. Từ những gì tôi có thể nói, mọi người nghĩ rằng việc đặt tên cho các mẫu mới sẽ là con đường dẫn đến sự nổi tiếng và giàu có. Đừng hiểu sai ý tôi, tôi nghĩ khái niệm mẫu là một thứ cực kỳ hữu ích để mô tả các giải pháp trong bản tóm tắt. Mọi thứ chỉ đi ra khỏi đường ray một chút. Thật không may vì nó tạo ra rất nhiều sự hoài nghi về khái niệm mẫu nói chung. Chỉ trong bối cảnh này, thật hợp lý khi nói về điều này như một giải pháp 'không chính thống'. Nó ' s tương tự như chính thống xung quanh các thùng chứa ORM hoặc DI. Không sử dụng chúng được coi là không chính thống mặc dù mọi người đã xây dựng phần mềm từ lâu trước khi các công cụ này tồn tại và trong nhiều trường hợp những công cụ đó là quá mức cần thiết.
Vì vậy, quay trở lại 'sửa chữa mọi thứ'. Một ví dụ đơn giản là tính toán phương tiện. Giải pháp đơn giản là tính tổng các số và chia cho giá trị chính của các giá trị. Nếu bạn thêm hoặc sửa đổi một số, bạn chỉ cần làm lại từ đầu. Bạn có thể theo dõi tổng và số lượng các số và khi ai đó thêm một số, bạn tăng số lượng và thêm nó vào tổng. Bây giờ bạn không thêm lại tất cả các số. Nếu bạn đã từng làm việc với Excel với công thức tham chiếu một phạm vi và sửa đổi một giá trị trong phạm vi đó, bạn có một ví dụ về mẫu 'sửa mọi thứ', tức là bất kỳ công thức nào có tham chiếu đến phạm vi đó sẽ tính lại bất kể liệu có giá trị đó có liên quan (ví dụ: sử dụng cái gì đó như sumif ()).
Điều này không có nghĩa là đây không phải là một lựa chọn thông minh trong bối cảnh nhất định. Trong ví dụ trung bình, giả sử bây giờ chúng ta cần hỗ trợ cập nhật. Bây giờ tôi cần biết giá trị cũ bằng cách nào đó và chỉ thay đổi tổng theo đồng bằng. Không ai trong số này thực sự là thách thức cho đến khi bạn xem xét cố gắng làm điều này trong một môi trường phân tán hoặc đồng thời. Bây giờ bạn phải xử lý tất cả các loại vấn đề thời gian gai góc và có khả năng bạn sẽ tạo ra một nút cổ chai lớn làm chậm mọi thứ hơn là tính toán lại.
Kết quả cuối cùng ở đây là 'sửa chữa mọi thứ' hoặc 'làm mới mọi thứ' phương pháp dễ dàng hơn nhiều để có được quyền. Bạn có thể làm cho một cách tiếp cận tinh vi hơn hoạt động nhưng nó phức tạp hơn nhiều và do đó có nhiều khả năng bị sai sót. Ngoài ra, trong rất nhiều bối cảnh, phương pháp 'làm mới mọi thứ' có thể hiệu quả hơn. Ví dụ, sao chép trên các phương pháp ghi thường chậm hơn đối với các cách tiếp cận đơn luồng nhưng khi bạn có độ đồng thời cao, nó có thể cho phép bạn tránh các khóa và do đó cung cấp hiệu suất tốt hơn. Trong các trường hợp khác, nó có thể cho phép bạn thay đổi hàng loạt cùng nhau một cách hiệu quả. Vì vậy, đối với hầu hết các vấn đề, có lẽ bạn muốn bắt đầu với một cách tiếp cận mọi thứ trừ khi bạn có một lý do cụ thể tại sao bạn không thể làm điều đó và sau đó lo lắng về việc làm một cái gì đó phức tạp hơn một khi bạn có nhu cầu.