quinta-feira, 9 de agosto de 2007

Mais uma da série "Como não programar"

HAHAHHA Hoje superou as espectativas em....

Você já ouviu fala em Design Pattern pra banco de dados?
Pois é, existe. Aquele relacionamento M <-> N, que gera uma tabela associativa, sim aquele que quando você explode o relacionamento vira 1->M N<-1 é um Design Patter pra banco de dados.

Agora me diga, você já ouviu fala em Tableless?
Se já ouviu falar sabe que esta é uma tecnologia pra fazer WebDesign sem a utilização de tabelas e nesse momento deve esta se perguntando o que isso tem haver com banco de dados?

Até hoje, eu também achava que não tinha nada haver. Mas um amigo meu relatou que em uma empresa de desenvolvimento de Software de Maringá, todo um sistema está em uma única tabela, sim, todo o sistema, sem normaliação nenhum.

Já entendeu?

Esta empresa desenvolve sistemas utilizando tableless, ehehehehe Eles desenvolvem todo o sistema em uma única tabelona gigantesca, os cara são hard core mesmo, são totalmente contra tabelas ehehhehhhehehe até no bano de dados. HEHEHEHHheheheh

Essa superou :D

Method Template

Hoje estava escrevendo um material pra ministrar minha aula no SergioYamada.com.br sobre DesignPatterns. Como observei que não havia nada sobre Template Method no WikiPedia (PT) resolvi colocar um trecho do material que pode ser conferido em:
http://pt.wikipedia.org/wiki/Template_Method

Porém...
Nem tudo é perfeito...
Em pouco tempo voltei ao link pra dar uma conferida, e encontrei essa mensagem:

Esta página foi proposta para eliminação rápida.
* Regra 20 - Artigos que encaixam no perfil de lixo ou impróprio.

20.1 - Desde que não seja o próprio proponente a eliminar o artigo.
20.2 - Confirmar no histórico se existem versões anteriores válidas.
20.3 - Em caso de dúvida sobre a validade do conteúdo, ou do título caso haja artigos afluentes, encaminhar a página para eliminação por votação em Páginas para eliminar.

* Proponente: Fabiano msg 23h38min de 9 de Agosto de 2007 (UTC)

A página será eliminada por um administrador se estiver em conformidade com a política de eliminação.

Administrador: não apagar a página apenas pela justificativa fazer sentido. Apague apenas se for caso de uma das 20 regras de eliminação rápida, devidamente preenchidas e de forma que se justifiquem. Em caso de dúvida deve-se propor para votação e avisar o proponente. Ver também as definições de Wikipedia:Lixo e Wikipedia:Impróprio.


puts... que chato


Bom... mas se o material não ficar no ar lá no wiki, então que pelo menos fique aqui:

== Lá Vai ==



Para entender este design pattern, pense em uma máquina de fazer café, mas que ela também sirva chocolate quente, e chá. Analise e reflita, oque estas três bebidas tem em comum, e oque elas tem de diferente?

Veja que todos “precisam” de açúcar, precisam ser aquecidos e misturados. O Method Template tem como finalidade aproveitar estas características em comum, de forma a permitir que cada bebida tenha também um comportamento específico.


package com.gms.designpattern.templatemethod;
import static java.lang.System.out;
public abstract class Bebida {
public String preparBebida(){
addAgua();
addAcucar();
addExtrato();
mecher();
return "Sua bebida está pronta!! \n".toUpperCase();
}
private void addAgua(){
out.println("Adicionando água...");
}
private void addAcucar(){
out.println("Adicionando Aúcar...");
}
private void mecher(){
out.println("Mechendo... Misturando...");
}
protected abstract void addExtrato();
}

package com.gms.designpattern.templatemethod;
import static java.lang.System.out;
public class Cafe extends Bebida {
@Override
protected void addExtrato() {
out.println("Adicinando extrato de café");
}
}

package com.gms.designpattern.templatemethod;
import static java.lang.System.out;
public class Chocolate extends Bebida {
@Override
protected void addExtrato() {
out.println("Adicinando extrato de chocolate...");
}
}

package com.gms.designpattern.templatemethod;
import static java.lang.System.out;
public class Cha extends Bebida{
@Override
protected void addExtrato() {
out.println("Adicinando extrato de chá...");
}
}

package com.gms.designpattern.templatemethod;
import static java.lang.System.out;
public class MaquinaDeBebidas {
public static void main(String [] args) {
Cafe cafe = new Cafe();
out.println(cafe.preparBebida());
out.println(new Chocolate().preparBebida());
out.println(new Cha().preparBebida());
}
}