No Flex, como eu sei quando as propriedades de uma mudança objeto dinâmico?
-
22-07-2019 - |
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?
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. :)