2012-11-04 26 views
8

Enums được coi là cách tốt nhất cho người độc thân và một trong những lý do cho điều này là nó hoàn toàn kế thừa Serializable.Enums, Singletons và Deserialization

Nhưng làm thế nào enums ngăn cản vấn đề de-serialization của singletons?

+0

Enum là một singleton nhưng các vấn đề về deserialization của singletons là gì? – clinton

+2

@clinton: nếu bạn thực hiện một singleton serializable, và không quan tâm về cách nó deserialized, bạn và lên với một trường hợp mới của singleton của bạn mỗi khi nó deserialized, mà phá vỡ singletonness của nó. –

+0

@JBNizet cảm ơn thông tin. Tôi đã không tìm kiếm vấn đề liên quan đến người độc thân trước đây. Hoặc nó có thể không đánh tôi là quan trọng. – clinton

Trả lời

1

Việc tuần tự hóa làm đối số cho việc sử dụng enum cho singleton là vô nghĩa.

Nếu enum singleton là trạng thái, trạng thái bị mất trong quá trình tuần tự hóa/deserialization.

Nếu singleton là phi trạng thái, ai quan tâm đến danh tính của nó?

+0

Nếu singleton là không trạng thái, và mã sử dụng (ví dụ) 'if (someVar == SomeSingleton.INSTANCE)', bạn thực sự quan tâm về danh tính của nó. –

+0

Không có trường hợp sử dụng thực tế nào. Jushua Khối đã làm điều này lên. Thông thường một singleton KHÔNG nên được serializable anyway, bằng cách sử dụng enum để tạo điều kiện serialization là chỉ sai. Ngoài ra, singleton là một chiến lược thực hiện, không phải cái gì chúng ta nên công bố tại giao diện. – irreputable