Dificuldade em modelagem de classe

6 respostas
R

Srs(a),

Dentre todos atributos e metodos de uma classe, somente 1 método precisa ter corpo diferente para cada objeto.
Como modelamos isso?
Obs.: Esse metodo terá umas 15 implementações diferentes.

Agradecido.

6 Respostas

leoramos

Como assim “corpo diferente para cada objeto”?

R

A assinatura do metodo é a mesma, porém a implementação não.
Ex.: Se codigo do objeto for 123, executar metodo A.

Só que terei uns 30 codigos de objeto. E umas 15 implementações diferentes.

public void configurar(){

if (this.codigo == 1)
...
else if (this.codigo == 2)
...

else if (this.codigo == 30)
...

}
L

Eu faria algo mais ou menos assim:

class ObjetoXYZ {
  ...
}

interface Configurador {
  boolean suportaTipo(int tipo);
  void configurar(ObjetoXYZ objeto);
}

class Configurardor123 implements Configurador {
  boolean suportaTipo(int tipo) {
    return tipo == 1 || tipo == 2 || tipo == 3;
  }
  void configurar(ObjetoXYZ objeto) {
    // Faz alguma coisa
  }
}

// Ai vc pode ter uma classe que possui uma instancia de todos os configuradores
class ConfiguradorFactory {
  List<Configurador> list;
  // Inicia a lista e adiciona as instancias de configuradores
  ConfiguradorFactory() {
    ..
    this.list.add(new Configurardor123());
   ... // Mais instancias de configuradores
  }
  Configurador getConfigurador(int tipo) {
    // Faz um loop na lista de retorna o tipo especifico
    if(configurador.suportaTipo(tipo)) {
      return configurador;
    }
  } 
  // Essa classe deve ser um singleton
}
luxu

o q vc postou naum implementa nada é só tomada de decisäo…

L

Olha a ideia e não o código, pois o código não tem nada mesmo.

R

Bom pensamento. Muito grato.

Criado 19 de outubro de 2011
Ultima resposta 20 de out. de 2011
Respostas 6
Participantes 4