Mặc dù có nhiều chủ đề về chủ đề đó, tôi vẫn chưa rõ khi nào nên chọn cách tiếp cận nào. Tôi hy vọng rằng bằng cách thảo luận một ví dụ cụ thể, cuối cùng tôi sẽ "hiểu nó".Lớp Singleton so với lớp có thành viên tĩnh
Lưu ý: Ngôn ngữ của tôi ở đây là Cocoa mặc dù vấn đề chung không phải là ngôn ngữ cụ thể.
Tôi có một hàng tác vụ lớp mà tôi muốn sử dụng để:
- truy cập từ bất cứ nơi nào trong mã của tôi để thêm hoặc loại bỏ nhiệm vụ theo lịch trình
- quá trình tự động các nhiệm vụ theo lịch trình đều đặn
Khi TaskQueue được sử dụng lần đầu tiên, tôi muốn TaskQueue bắt đầu một chuỗi và sau đó sẽ thức dậy theo các khoảng thời gian đều đặn để xử lý các tác vụ.
Rõ ràng, tôi sẽ cần ít nhất hai biến:
- một mảng để lưu trữ các nhiệm vụ
- một thể hiện của các chủ đề xử lý các nhiệm vụ
Kể từ khi tôi chỉ muốn một hàng đợi các nhiệm vụ và một chuỗi để xử lý các tác vụ này, tôi có hai lựa chọn:
Hãy hàng tác vụ một lớp singleton (sử dụng ví dụ CWL_DECLARE_SINGLETON_FOR_CLASS_WITH_ACCESSOR như mô tả trong http://www.cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html, mà tôi tin rằng tôi sẽ phải sửa đổi các tập tin CWLSynthesizeSingleton.h để bắt đầu thread lúc init.)
Có hàng loạt các nhiệm vụ và các chủ đề Ví dụ cả tĩnh (sau đây phương pháp này gợi ý ở đây: How do I declare class-level properties in Objective-C?)
có rõ ràng một cách tiếp cận đó là tốt hơn so với một trong những khác trong trường hợp cụ thể này? Nếu vậy, tại sao?
bị lừa: http://stackoverflow.com/questions/519520/difference-between-static-class-and-singleton-pattern?lq=1 – cregox