Acoplamento de controle.
Passar flags de controle entre objetos de forma que um objeto controle as etapas de processamento de outro objeto.
Ocorrência comum:
· Objeto a manda uma mensagem para objeto b
· b usa um parâmetro da mensagem para decidir o que fazer
Ex.
Código.
class Lampada {
public static int ON = 0;
public void setLampada(int valor) {
if(valor == ON) {
// liga lampada
} else if(valor == 1) {
// desliga lampada
} else if(valor == 2) {
// pisca
}
}
}
Lampada lampapa = new Lampada();
lampada.setLampada(Lampada.ON);lampada.setLampada(2);
Solução: decompor a operação em múltiplas operações primitivas
Ex.
Código:
class Lampada {
public void on() { // liga lampada }
public void off() { // desliga lampada }
public void pisca() { // pisca }
}
Lampada lampada = new Lampada();
lampada.on();lampada.pisca();
Ocorrência comum:
· Objeto a manda mensagem para objeto b
· b retorna informação de controle para a
· Exemplo: retorno de código de erro
Ex.
Código:
class Teste {
public int printFile(File aImprimir) {
if(aImprimir está corrompido ) {
return CORRUPTFLAG;
}
// etc. etc.
}
}
Teste umTeste = new Teste();
int resultado = umTese.printFile(miniTeste);
if(resultado == CORRUPTFLAG) {
// oh! oh!
} else if(resultado == -243) {
// etc. etc.
Solução: use exceções
Ex.
Código:
class Teste {
public int printFile(File aImprimir) throws PrintExeception {
if(aImprimir está corrompido ) {
throw new PrintExeception();
}
// etc. etc.
}
}
try {
Teste umTeste = new Teste();
umTeste.printFile(miniTeste);
} catch(PrintException printError) {
// mail para a turma: não tem miniteste amanhã!
}
quinta-feira, 20 de março de 2008
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário