Tôi đang tìm kiếm các cách khác nhau để đảm bảo rằng mỗi phiên bản của một lớp nhất định là một thể hiện duy nhất có thể nhận dạng được.
Ví dụ, tôi có một Namelớp với lĩnh vực này name. Khi tôi có một Nameđối tượng được namekhởi tạo cho John Smith, tôi không muốn khởi tạo một Nameđối tượng khác với tên là John Smith, hoặc nếu việc khởi tạo xảy ra, tôi muốn tham chiếu đến đối tượng ban đầu được truyền lại hơn một đối tượng mới.
Tôi biết rằng một cách để làm điều này là có một nhà máy tĩnh chứa một Maptrong số tất cả các đối tượng Tên hiện tại và nhà máy kiểm tra xem một đối tượng có John Smith là tên không tồn tại trước khi quay lại tham chiếu đến một Namevật.
Một cách khác mà tôi có thể nghĩ ra khỏi đỉnh đầu là có một Bản đồ tĩnh trong Namelớp và khi hàm tạo được gọi là ném một ngoại lệ nếu giá trị được truyền vào nameđã được sử dụng trong một đối tượng khác, tuy nhiên tôi biết rằng sẽ ném ngoại lệ trong một nhà xây dựng nói chung là một ý tưởng tồi .
Có những cách khác để đạt được điều này?
I'm aware that one way of doing this is to have a static factory that holds a Map...Vậy tại sao bạn không muốn làm theo cách này?