marto, ¡qué flojo!

Esto que describes, que algunos llaman "
lazy construction" sigue correspondiendo al modelo:
Calculos;
Result := FPropiedad;
Y los cálculos pueden modificar otras propiedades privadas del objeto, tal como lo hace Marteens por razones de eficiencia básicamente ya que otras propiedades hacen uso de los mismos valores.
Pero aquí se está modificando un aparato externo a fin de cuentas y es lo que es al menos un poco raro. Es algo como:
Código:
function TTelefono.Get: TEstado;
begin
Result := FEstado;
DispositivoFisico.Estado := FEstado;
end;
Y es la segunda asignación la que es extraña. En la lógica subyacente se esta escribiendo una propiedad en la lectura de otra (no una variable, una propiedad). Sí, esto es lo que Marteens hace referencia con el principio de Incertidumbre. Y es quizá adecuado para modificar variables internas del objeto a fin de evitar recálculos innecesarios, pero el hecho de que en la física haya tal incertidumbre no significa que debamos, además, crear más incertidumbre en nuestras aplicaciones.
// Saludos