He leído algunos artículos/publicaciones sobre el uso de Getters y Setters, y cómo ayudan a vencer el propósito de la encapsulación en objetos de modelo de dominio. Entiendo la lógica detrás de no usar setters: está permitiendo que el código del cliente manipule los atributos de ese objeto, fuera del contexto de las reglas de negocio objeto e invariantes.DDD y el uso de Getters y Setters
Ahora, este principal todavía me confunde. Por ejemplo, ¿qué sucede si necesito cambiar el valor de una variable miembro de un objeto? Por ejemplo, si el nombre de una persona cambia, ¿cómo puedo reflejar esto en el modelo? Al principio pensé, bueno, ¿por qué no tener una función llamada 'ChangeName' que me permite pasar el nuevo nombre y, a su vez, puede cambiar la variable interna de 'nombre'. Bueno ... eso es solo un colocador ¿no?
Lo que necesito aclarar: si tuviera que eliminar por completo a los incubadores, entonces en situaciones como las anteriores, ¿se supone que debo confiar únicamente en los parámetros del constructor? ¿Debería pasar el nuevo valor de atributo en lugar del antiguo valor de atributo a través de un constructor, después de lo cual puedo persistir en los cambios pasando el objeto a la infraestructura de persistencia que tengo?
Estos dos artículos son útiles en esta discusión: