Saya mencari cara yang berbeda untuk memastikan bahwa setiap instance dari kelas yang diberikan adalah instance yang dapat diidentifikasi secara unik.
Sebagai contoh, saya memiliki Name
kelas dengan bidang name
. Setelah saya memiliki Name
objek dengan name
inisialisasi ke John Smith, saya tidak ingin dapat instantiate Name
objek yang berbeda juga dengan nama sebagai John Smith, atau jika instantiasi terjadi saya ingin referensi ke objek asli untuk dilewatkan kembali bukan dari objek baru.
Saya sadar bahwa salah satu cara untuk melakukan ini adalah memiliki pabrik statis yang menampung Map
semua objek Nama saat ini dan pabrik memeriksa bahwa sebuah objek dengan John Smith sebagai namanya belum ada sebelum meneruskan referensi ke Name
obyek.
Cara lain yang bisa saya pikirkan dari atas kepala saya adalah memiliki Peta statis di Name
kelas dan ketika konstruktor disebut melempar pengecualian jika nilai yang diteruskan name
sudah digunakan di objek lain, namun saya sadar melemparkan pengecualian dalam konstruktor umumnya merupakan ide yang buruk .
Apakah ada cara lain untuk mencapai ini?
I'm aware that one way of doing this is to have a static factory that holds a Map...
Jadi mengapa Anda tidak ingin melakukannya dengan cara ini?