¿Qué es un objeto inmutable?
En la programación orientada a objetos, un objeto inmutable es un objeto cuyas propiedades no se pueden cambiar después de haber sido creado. La mayoría de los objetos, por el contrario, son objetos mutables, lo que significa que algunas o todas sus propiedades se pueden cambiar libremente después de la creación. Una variedad de lenguajes de computadora tiene la capacidad de crear objetos inmutables, incluidos Java, C ++, erlang, Tcl y scala.
Un objeto inmutable se puede crear de una de dos maneras: creando una clase que, por definición, sea inmutable o declarando explícitamente que un objeto mutable es inmutable. La metodología para crear una clase inmutable varía según el lenguaje informático que se utilice. Independientemente del idioma, una clase inmutable no debe tener métodos que puedan cambiar sus datos internos y no hay forma de que los métodos sean cambiados, es decir, anulados o sobrecargados, de una manera que cambie sus datos internos. Este es el más complicado de los dos enfoques. Por otro lado, para crear un objeto inmutable a partir de otro objeto mutable, a menudo se puede aplicar una palabra clave para designar el objeto como inmutable.
Como ejemplo, la creación de objetos inmutables en Java depende en gran medida de la palabra clave "final". Una forma rápida de hacer que una clase sea inmutable en Java es declarar la clase, así como todos sus métodos y miembros de datos, final. Una estrategia similar también se puede utilizar en C ++ con la palabra clave "const". Sin embargo, estos enfoques, dependiendo del contenido de la clase, podrían no ser los mejores. En general, los objetos pueden hacerse inmutables mediante el mantenimiento cuidadoso de sus datos internos.
Hacer un objeto inmutable usando una palabra clave, como en el ejemplo anterior, a menudo es mucho más fácil que escribir una clase completa para que sea inmutable. Sin embargo, usar este enfoque tiene sus peligros. Cuando se designa explícitamente un objeto inmutable de esta manera, es importante que el programador se asegure de que todas las propiedades y datos apropiados se hayan incorporado primero al objeto. Confiar en un objeto incompleto puede ser peligroso, especialmente si le falta una información esencial.
Si un objeto es mutable pero requiere que los datos inmutables se creen correctamente, los datos inmutables deben inicializarse antes de que se pueda hacer el objeto mutable. Los objetos inmutables siempre son inmutables, ya sean valores de datos u objetos grandes, y siempre deben tratarse como tales. En general, un objeto inmutable no puede hacerse mutable después de haber sido creado, aunque a veces puede copiarse como objetos mutables. Por lo general, se puede suponer que un objeto inmutable y cualquiera de sus copias también son inmutables, lo que puede evitar problemas de datos o memoria.