Tôi thường tạo các ứng dụng yêu cầu lưu trữ dữ liệu và dữ liệu này được sử dụng trên toàn bộ chương trình. Mặc dù vậy, nó không nhiều, vì vậy tôi thường sử dụng NSUserDefaults
để tải/lưu dữ liệu này. Tuy nhiên, mã lưu/tải, cùng với việc đóng gói/giải nén dữ liệu, chiếm không gian, và tôi nghĩ việc chuyển mã này sang các phương thức tái sử dụng bên trong một singleton toàn cầu sẽ là một ý tưởng tốt. Dường như nó đã hoạt động tốt.Có sử dụng singleton làm lớp quản lý dữ liệu không?
Mặc dù vậy, gần đây tôi đã đọc rất nhiều về các tệ nạn của những người độc thân và các đối tượng toàn cầu, và tôi bắt đầu có những suy nghĩ thứ hai. Mọi người thường nói rằng việc sử dụng các singletons hầu như luôn luôn là một dấu hiệu của thiết kế kém. Đối với hầu hết các phần, tôi không đồng ý (tôi nghĩ rằng sử dụng đơn giản như thế này là một mẫu thiết kế tốt), nhưng tôi chắc chắn không có chuyên gia về vấn đề này.
Vì vậy, đang sử dụng đơn lẻ ngay cả theo cách đơn giản như thế này không tốt? Nếu vậy, lựa chọn nào tốt hơn?
Không, không tệ, không tệ chút nào. Xin lưu ý rằng một số lớp iOS SDK do Apple cung cấp được triển khai dưới dạng tệp đơn. Mà không phải là để nói rằng mã Apple là mã tự động tốt, nhưng nó mạnh mẽ ngụ ý rằng mô hình singleton không phải là không có phẩm chất cứu chuộc. – aroth