xnet:
Boas pessoal,
tenho dois Arrays bidimencionais, e tenho que escrever codigo em Java para o seguinte cenario :
- Todas as alterações no Array1, implicam modificações no Array2.
- Todas as alterações no Array2 , implicam modificações no Array1.
- Existe aqui um par em que os Arrays são Subjects e Observers em simultaneo, certo !?
- A informação visivel para cada um dos utilizadores do array só pode ser visivel para o proprio, ou seja quem usa o array1 só pode ver a informação do array1, e quem usa o array2 só pode ver a informação do array2.
Isto sugere a ultilização do Padrão Observer + MVC !?
Não sei se o Observer é o melhor.
Para que isso funcione vc tem que encapsular os arrays de forma a poder intersecptar operações que os alteram.
Nesse momento vc envia um evento a todos os Observadores ( tb chamados Listeners) que se registraram como interessados em ouvir esses eventos (daqui o nome listener).
Repare que o objeto que se altera não conhece nada da interface dos objetos que o escutam, apenas conhece
os seus listeners.
Agora, tome atenção que se o que vc quer é estado sincronizado. Logo, qq alteração tem que se propagar para o outro array antes que mais alguma operação seja feita. É como se a propagação estivesse dentro de uma transação.
Acho que a melhor opção seria ter um Shared Object . Ou seja, vc cria apenas 1 array e faz parecer que são 2, 3 … N. Na realidade ,se os estados são sincronizados, é como se o objeto fosse um so.
Note que vc não vai conseguir usar arrays padrão do java em qualquer dos casos, vc tem que encapsular num outro objecto. O melhor seria usar um List e aqui o uso de Vector como implementação é necessário por causa do sincronismo.