Прочетете тук.
Както променливите, така и неизменните обекти имат свои собствени приложения, плюсове и минуси.
Неизменните обекти наистина правят живота по-прост в много случаи. Те са особено приложими за типове стойности, където обектите нямат идентичност, така че да могат лесно да бъдат заменени. И те могат да направят едновременното програмиране по-безопасно и по-чисто (повечето от известните трудни за намиране грешки при паралелност в крайна сметка са причинени от променливо състояние, споделено между нишките). Въпреки това, за големи и/или сложни обекти, създаването на ново копие на обекта за всяка отделна промяна може да бъде много скъпо и/или досадно. А за обекти с различна идентичност промяната на съществуващ обект е много по-проста и интуитивна от създаването на ново, модифицирано негово копие.
Помислете за герой в играта. В игрите скоростта е основен приоритет, така че представянето на вашите герои в играта с променливи обекти най-вероятно ще направи играта ви да работи значително по-бързо от алтернативна реализация, при която за всяка малка промяна се създава ново копие на героя в играта.
Освен това нашето възприятие за реалния свят неизбежно се основава на променливи обекти. Когато зареждате колата си с гориво на бензиностанцията, вие я възприемате като един и същ обект през цялото време (т.е. нейната идентичност се запазва, докато състоянието й се променя) - не като че старата кола с празен резервоар е заменена с последователно нова автомобилни екземпляри, като резервоарът им постепенно се пълни все повече и повече. Така че винаги, когато моделираме някакъв домейн от реалния свят в програма, обикновено е по-просто и по-лесно да внедрим модела на домейн, като използваме променливи обекти за представяне на обекти от реалния свят.
person
Achintya Jha
schedule
24.05.2014