Codigos Fonte, Artigos e Dicas
Template Method e Factoy Method
Bom estava eu na aula de PDS ano passado e vi um padrao que sabia q ia usar logo de cara, porque? ele reduz codigo! e deixa o codigo bonito e OO. ehhehe
o Design Pattern Template Method e Factoy Method são muito uteis pois tiram codigos inuteis da sua classe concreta e centraliza tudo em uma classe abstrata… ou seja seu codigo vai ficar limpo e lindo… OO =D SRP
Pra que serve?
O themplete method como o nome diz é um methodo que vc ia ter q fazer nas sub classes e teria que reescrevelo em todas as subclasses, igual em todas elas, mudando apenas uma regiao… o template method ajuda nesse ponto, pois se vc escrever o methodo na classe abstrata ele vai ser herdado pelas subclasses logo vc vai ter q modificar apenas akele pequeno fragmento de codigo que cada classe faz diferente…
1º Faça o seu templete method…
public Algarism getAlgarism(int code){
if(code9){
throw new IllegalArgumentException("Só pode estar entre 0 e 9 tolinho...");
}else{
if (this.algarismos[code]!=null){
return this.algarismos[code];
}else{
Algarism alg = this.create(code);
if (alg == null)
throw new NullPointerException("Algarismo esta nulo...");
this.algarismos[code]=alg;
return this.algarismos[code];
}
}
}
veja q temos uma abstração Algarism que recebe um this.crate(code>); esse vai ser o nosso metodo que muda nas subclasses, logo teremos que crialo como abstrato, para que seja forçada a criação dele nas subclasses...
protected abstract Algarism create(int code);
2º pronto agora vamos nas subclasses e apenas criamos o metodo create... que é o nosso Factoy Method:
protected Algarism create(int code){
return new SymbolAlgarism(code);
}
protected Algarism create(int code){
return new TextAlgarism(code);
}
Nenhum post foi relacionado a este
| Imprimir artigo | Este artigo foi escrito por paulodiogo em 10 10UTC julho 10UTC 2009 às 14:11, e está arquivado em Design Pattern. Siga quaisquer respostas a este artigo através do RSS 2.0. Você pode deixar uma resposta ou fazer um trackback do seu próprio site. |
