Đây là một câu hỏi lập trình tầm thường. Tôi không phải là một chuyên gia về Java. Nói rằng tôi sử dụng các đối tượng của Công ty lớp tùy chỉnh và nhân viên, một cách tương tự với những gì nhiều RDBMS ví dụ làm:Người ta có thể kiểm soát danh tính của các đối tượng trong Java hay không và nếu có thì làm cách nào?
class Employee
{
Company company;
}
class Company
{
String name;
}
tôi cần phải đảm bảo rằng khác nhau Company
đối tượng có tên duy nhất - tức là không có hai đối tượng đó có thể có cùng một tên, bởi vì từ quan điểm của tôi nó không có ý nghĩa, và cũng chỉ đơn giản là ăn bộ nhớ - nếu hai nhân viên làm việc tại IBM, sau đó có một đối tượng Company
duy nhất với name
, khoảng thời gian đó.
Suy nghĩ của tôi bây giờ đi cùng với việc tạo một đối tượng riêng tư - để cho công việc phân bổ đối tượng Công ty với tên tùy ý được ủy nhiệm cho một phương thức đáng tin cậy - giả sử sẽ từ chối mọi nỗ lực tạo đối tượng đã tồn tại hoặc trả lại một đối tượng hiện có hoặc mới (tạo một đối tượng nếu cần).
Vấn đề là, tôi không chắc chắn cách thực hiện điều này một cách trang nhã. Một điều mà sẽ tốt đẹp là không phải thực hiện tra cứu O(n)
mỗi khi một đối tượng Company
có tên được yêu cầu - vì vậy có thể bản đồ băm hoặc cây nhị phân có tiện lợi cho tôi không? Tôi cũng muốn ghi đè cách thức các đối tượng Company
được xác định - dẫn tôi đến điều này: tôi sẽ ghi đè các phương pháp Object.equals
và/hoặc Object.hashCode
?
Bạn có chắc chắn rằng bạn nên quan tâm đến việc sử dụng bộ nhớ thừa? Bạn sẽ phải trả tiền để theo dõi tất cả các công ty bằng cách nào đó, và nó sẽ chi phí bạn (có lẽ trong CPU). Đảm bảo rằng tối ưu hóa của bạn không sớm. – nojo
Điều này không nhất thiết phải là quá nhiều cho việc tối ưu hóa, vì nó là vì tầm quan trọng của ràng buộc mà nên tránh hai đối tượng 'Công ty' có cùng tên. Bằng cách đó, nếu, nói rằng công ty tham chiếu bởi N nhân viên thay đổi tên, tôi chỉ phải thực sự làm điều đó cho một đối tượng 'Company'. Những thứ như thế. – amn