Tôi đang chạy một máy chủ thỉnh thoảng phải tìm kiếm truy vấn của khách hàng. Tôi muốn viết các truy vấn khách hàng vào đĩa cho các bản ghi, nhưng tôi không muốn làm chậm tìm kiếm nữa so với tôi phải. (Tìm kiếm đã là nút cổ chai ...)Sử dụng đúng mẫu thiết kế singleton
Vì vậy, khi khách hàng thực hiện tìm kiếm, tôi có chủ đề của khách hàng gửi tin nhắn đến một chuỗi đơn, sẽ xử lý ghi đĩa, trong khi chuỗi khách hàng tiếp tục xử lý các yêu cầu của khách hàng. Bằng cách đó, các tập tin trên đĩa không chạy vào các vấn đề đồng bộ, và nó không làm chậm kinh nghiệm của khách hàng xuống.
Tôi có một câu hỏi khái niệm ở đây: là singleton thích hợp trong trường hợp này? Tôi đã sử dụng mẫu thiết kế singleton một chút quá nhiều trong chương trình gần đây của tôi, và tôi muốn chắc chắn rằng tôi đang sử dụng nó cho mục đích sử dụng của nó.
Bất kỳ phản hồi nào được đánh giá cao.
Rất khó để trả lời câu hỏi này mà không thấy kiến trúc tổng thể của bạn. Có những hạn chế đối với mẫu đơn (gây ra khó khăn trong việc kiểm tra đơn vị, v.v.), tùy thuộc vào bạn để xác định xem chúng có liên quan hay không ... –
Cảm ơn phản ứng nhanh Oli; Tôi đã đọc về những khó khăn trong việc kiểm thử đơn vị nhưng không hiểu được những tác động tổng thể. Tại sao tránh tình trạng toàn cầu tầm quan trọng như vậy? Ví dụ, nếu chỉ có một tập tin trên đĩa mà một chương trình ghi vào, không ai muốn chắc chắn rằng nó không thể được truy cập cùng một lúc bởi các phần khác nhau? – Sal
sự tồn tại của trạng thái toàn cầu có thể gây khó khăn cho việc chèn phụ thuộc (đây là cơ sở của [thử nghiệm giả lập] (http://en.wikipedia.org/wiki/Mock_object)). Xem bài nói chuyện này để biết thêm chi tiết: http://googletesting.blogspot.com/2008/11/clean-code-talks-global-state-and.html. –