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 Name
lớp với lĩnh vực này name
. Khi tôi có một Name
đối tượng được name
khở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 Map
trong 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 Name
vậ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 Name
lớ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?