Visibilidade de classes e metodos

2 respostas
kotoko

Boas!

Eu estou a tentar fazer um programa com bastantes classes e gostaria que as coisas se passassem de forma:

Há 3 níveis de classes (por ordem decrescente) controladores -> gestores -> dados

O meu objectivo era que apenas os gestores pudessem utilizar os metodos de um determinado tipo de dados e que apenas os controladores usassem os gestores sendo possivel determinar que controladores podem utilizar os metodos de cada gestor.

Para finalizar apenas pode existir uma instancia de cada gestor e de cada controlador.
Para quem está familiarizado com o design pattern singleton, eu usei o pedaço de codigo de seguinte site http://www.javacoffeebreak.com/articles/designpatterns/index.html mas descubri que isto faz uma referencia recursiva ao proprio controlador, ou seja, cada classe tem uma referencia e cada referencia aponta para uma classe que seria sempre a mesma até ao infinito.
Obviamente nao estou muito satisfeita com esta soluçao.

Alguém tem ideias?

2 Respostas

ViniGodoy

Ok, como você deixou os modificadores private, public e protected, como organizou os pacotes e como deixou a navegabilidade entre as classes?

Para implementar um singleton basta fazer:

public class Singleton {
   //Criação da instância única
   public static Singleton myInstance = new Singleton();

   //Método para obtenção da instância
   public static Singleton getInstance() {
        return myInstance;
   }

   //Construtor tornado private
   private Singleton {}
}

Fique atenta que esse pattern não funciona muito bem em aplicações com mais de um class loader ou em aplicações que rodem de maneira distribuída, em mais de uma VM. E se seu objeto será serializado, você também terá que colocar código adicional no método readResolve para garantir que o singleton não será de-serializado mais de uma vez.

kotoko

Eu deixei tudo public menos os metodos e atributos que não eram para ser vistos por ninguem de fora da classe.
Foi exactamente assim que eu implementei o padrao mas com o debugger do eclipse reparei que de cada vez que aprofundava o que tinha a referencia tinha sempre outra referencia e outra e outra …
Isto soa a que está alguma coisa muito mal. :?
Nao seria igualmente bom ter uma classe static que inicializasse todos os managers?
O meu problema é que não percebo nada de “quem vê quem”, tudo o que eu queria era fazer com que por exemplo apenas essa tal classe podesse usar os contructores dos managers.

E depois é bem possivel que o codigo venha a ter k ser usado d forma distibuida por isso eu queria fazer uma coisa bem “limpinha”.

Criado 27 de abril de 2007
Ultima resposta 29 de abr. de 2007
Respostas 2
Participantes 2