У меня есть иерархия классов, и я бы хотел, чтобы у каждого объекта был идентификатор вида Classname-integer
(примеры: Car-0
, Car-1
, Motorcycle-0
, Truck-0
, Truck-1
, ...)
Иерархия классов:
Vehicle
Car
Motorcycle
Truck
Проблема в том, что я хочу написать только один раз код, который управляет идентификаторами, и я потерялся в конструкторах, прототипах, позднем связывании и т. Д.
Пример того, что я хотел бы получить в псевдокоде:
car = new Car
anotherCar = new Car
car.id // "Car-0"
anotherCar.id // "Car-1"
truck = new Truck
truck.id // "Truck-0"
конструктор Car
инициализирует идентификатор объекта текущим доступным идентификатором Car, а затем увеличивает его так, чтобы следующий новый Car имел другой идентификатор. Это не должно влиять на идентификаторы других классов.
В идеале я хотел бы написать код только в базовом классе Vehicle
, но я не знаю, возможно ли это.
Мой текущий целевой язык - Coffeescript / Javascript, но приветствуются и другие языки, а также некоторые рассуждения о том, как это работает.
Как бы вы решили это?