Почему иммутабельные?Если переданный объект иммумабилен то не страшно что кто то изменит его.
При создании объекта мы передаем ему в конструктор начальную позицию, после чего мутируем через метод сеттер, или to или move или еще как называем метод перемещения.Если на
Character
есть getter к position
то возможно менять позицию и без того чтобы использовать character.move
. Если getter-a нет, то как использовать местоположение персонажа? К примеру нужна местоположение чтобы рисовать персонажа или чтобы проверить если он столкнулся с чем то?position
? Возвращать clone от position? Во первых вы теперь вообще нарушили логику наименования. Не getPosition, а setPosition нужно.
Character
а через getter
получить доступ к его позиции и у нее вызвать метод который меняет x и y.Хорошей практикой является - делать свои объекты целостными, чтобы объект имел в себе все данные и методы для работы и сам решал как ему с этими данными поступать
position
для персонажа.Ключевой момент который тут стоит понять, это что на данный ваш объект не целостен
class Character {
// ...
public getPosition(): Position {
return this.positon;
}
}
// ...
character.getPosition().to(10, 12);
...решился заняться тем, чем всегда хотелось, программированием связанным с роботами и на подобие этого...
...Всегда нравились роботы, что то сложное и интересное...
Как этого можно добится на практике? В любом случае если есть больше одного объекта, им придется взаимодействовать и одному из них придется получить свойства от друнгого.