Pergunta

Eu tenho uma classe dinâmica que serve como um recipiente de armazenamento de definições de configuração. As configurações são variáveis ??dessa classe e tem métodos para ler e escrever para um arquivo de configuração, banco de dados etc. Agora eu quero gatilho escrita para o armazenamento persistente, sempre que uma variável de classe é alterado. Como as variáveis ??são adicionados dinamicamente em tempo de execução, não pode usar métodos get / set, também, se eu pudesse, que levaria a um monte de código clichê.

Como posso ter um evento acionado para alterar as propriedades da minha classe?

Foi útil?

Solução

Você pode subclasse desta classe de seu a partir mx.utils.Proxy . Ele permite que você tenha o objeto ser dinâmico e ainda assim ser capaz de escrever algum código personalizado que é executado sempre que as propriedades são acessados ??(de forma semelhante ao getters e setters - veja getProperty() e setProperty() .)

Outras dicas

Eu consideraria evitando o objeto dinâmico, e sim criar a classe de armazenamento de dados (SettingsModel?) Com um método para armazenar e um método para recuperar dados. Então, em vez de usar:

configurationSettings.randomSetting = value;

... você escreveria:

configurationSettings.store("randomSetting", value);

Você pode armazenar as configurações chamados internamente em um dicionário, e fazer o que necessidades mágica para ser feito no método store().

A principal vantagem aqui é a legibilidade: quando você vê um método que está sendo chamado, você sabe que há funcionalidade por trás dele. Pela mesma razão que tendem a funções getter / setter não gosta.

No final, é uma questão de gosto, por isso, se o seu código não está quebrado, porque corrigi-lo. :)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top