Имеют ли смысл эффективно неизменяемые объекты?

В книге Java Concurrency In Practice он объясняет преимущества« эффективно неизменяемых »объектов по сравнению с изменяемыми объектами с точки зрения параллелизма. Но это не объясняет какое преимущество "эффективно неизменяемые" объекты могут предложить перед действительно неизменяемыми объектами.

И я не понимаю: разве вы не можете всегда построить действительно неизменяемый объект в данный момент вы бы решили безопасно опубликовать «фактически неизменяемый» объект? (вместо того, чтобы делать «безопасную публикацию», вы бы создали действительно неизменяемый объект, и все)

Когда я проектирую классы, я не могу увидеть случаи, когда я не всегда мог создать действительно неизменяемый объект (используя делегирование, если необходимо, и т. д. для создания других обернутых объектов, которые, конечно же, являются действительно неизменяемыми) в тот момент, когда я решил «безопасно опубликовать».

«эффективно неизменяемые» объекты и их «безопасная публикация» только в случае плохого дизайна или плохих API?

Где вы были бы вынуждены использовать эффективно неизменяемый объект и быть вынуждены безопасно публиковать его там, где вы не можете построить намного превосходный, действительно неизменяемый объект?

10
задан reevesy 9 May 2012 в 03:45
поделиться