Pregunta

Tengo una clase dinámica que sirve como contenedor de almacenamiento para la configuración. Las configuraciones son variables de esa clase y tiene métodos para leer y escribir en un archivo de configuración, base de datos, etc. Ahora quiero activar la escritura en el almacenamiento persistente cada vez que se cambia una variable de clase. Como las variables se agregan dinámicamente en tiempo de ejecución, no puedo usar los métodos get / set, también, si pudiera, eso conduciría a una gran cantidad de código repetitivo.

¿Cómo puedo activar un evento para cambiar las propiedades de mi clase?

¿Fue útil?

Solución

Puede subclasificar esta clase suya desde mx.utils.Proxy . Le permite hacer que el objeto sea dinámico y aún así poder escribir un código personalizado que se ejecuta cada vez que se accede a las propiedades (de manera similar a los captadores y establecedores; consulte getProperty () y setProperty () .)

Otros consejos

Consideraría evitar el objeto dinámico, y más bien crear la clase de almacenamiento de datos (SettingsModel?) con un método para almacenar y un método para recuperar datos. Entonces, en lugar de usar:

configurationSettings.randomSetting = value;

... escribirías:

configurationSettings.store("randomSetting", value);

Puede almacenar las configuraciones con nombre internamente en un Diccionario y hacer lo que sea necesario para hacer magia en el método store () .

La principal ventaja aquí es la legibilidad: cuando ve que se llama a un método, sabe que hay funcionalidad detrás de él. Por la misma razón, no me gustan las funciones getter / setter.

Al final es cuestión de gustos, así que si tu código no está roto, ¿por qué arreglarlo? :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top