Comoe xatamente voce chegou a essa conclusao?
Voce nao acha que esta pensando demais em actions? Command eh um padrao, deve ser usaod em casos muito especificos (por exemplo, processar uma requisiçao web e despachar para um objetod e negocio).
Comoe xatamente voce chegou a essa conclusao?
Voce nao acha que esta pensando demais em actions? Command eh um padrao, deve ser usaod em casos muito especificos (por exemplo, processar uma requisiçao web e despachar para um objetod e negocio).
Pessoalmente sem um contexto armado ficaria com o cliente.grava(); ,transparente a lot.
O ponto g da coisa é ser claro e lógico, intuitivo, seguir um -padrão- sempre
( não me refiro aos padrões dos designs).
Lipe:
Foi isso que o Daniel Quirino falou, a coisa tem que ser intuitiva, e fazer isso é foda.
Pergunta: No padrão visitor um determinado algoritmo está do lado de fora da classe que o utiliza.O forte do visitor é adicionar funcionalidade, pelo menos pelo exemplo citado pelo Lipe.
Até que ponto é legal fazer essas visitas? Quando “eu não quero um monte de if/else dentro do metodo” não foi muito esclarecedor.
Fica aquele lance de ser intuitivo e manter a coisa simples, “pra manter a sanidade do desenvolvedor futuro”, num foi isso shoes?
Valeu tbm Lipe pelos links, principalmente o do javaworld.com
O shoes é dislexo :?: Ele viev trocand oas lertas. Alguem cria um parser aew :mrgreen:
Hmmm, as coisas estão ficando mais complexas. Vamos introduzir algumas dependências novas aqui.
public interface Bebedouro{
public Liquido acionarBebedouro() throws SemLiquidoException;
}
public class BebedouroEletrico implements Bebedouro{
public Liquido acionarBebedouro() throws SemLiquidoException{
if(! temAgua())
throw new SemLiquidoException("Xii, tá sem água!");
return new Agua();
}
}
public class MaquinaCocaCola implements Bebedouro{
public Liquido acionarBebedouro() throws SemLiquidoException{
if((! temXarope()) || (! temAguaGaseificada()))
throw new SemLiquidoException("Xii, não tem coca-cola!!");
return new CocaCola();
}
}
public class Pessoa{
private void beber(Liquido l){
l.matarSede(this);
}
public void beber(Bebedouro b){
while(estiverComSede()){
Liquido l = b.acionarBebedouro();
beber(l);
}
}
}
Ok, versãozinha bem simplista. Coisas a se melhorar:
:arrow: criar uma interface “Recipiente” e jogá-la no mesmo nível de abstração da interface “Bebedouro”.
:arrow: alterar a classe Pessoa para que ela suporte um método “beber” que aceite um “Recipiente”. Desta forma, mata-se o requisito “ahhh e se fulano quiser beber em um cantil ou de uma garrafa?”.
P.S.: *Daniel divaga: com Ruby isso seria tão mais fácil. Mas até que é divertido fazer isso em Java
Quer saber se a agua eh bebida ou mata asede?
Pergunte pro seu usuario o que faz mais sentido apra ele
O foco da aplicação vai ditar este tipod e coisas. Voce esta fazendo uma aplicaçao principalmente sobre pessoas que bebem agua ou agua que mata a sede de pessoas?
No alvo :mrgreen:
Programador Java vive sofrendo de “Ainda não está complexo o suficiente”.
Phillip, aindo estou mentalmente trabalhando o que você passou no workshop e o que vocês postaram aqui
eu entendi o ponto, mas o que realmente eu não estou enxergando é como aplicar esse desenvolvimento em camadas (de verdade) ao uma aplicação web de verdade
mas como você mesmo disse, tem horas que nem compensa desenvolver em camadas
mesmo assim, eu quero muito entender como aplicar o desenvolvimentos em camadas ao desenvolvimento web
eu sei que vão me indicar um grosso livro do martin folwer (como escreve mesmo), GOF, etc, mas tem alguma aplicação (web-based) com os fontes abertos por aí que realmente esta todinha desenvolvida em camadas com todas essas boas práticas?
É muito mais fácil você dar uma lidinha no livrinho do Fowler (é, livrinho, livrão é o Pro Spring que tem 806 páginas) e depois pegar uma aplicação escrita em camadas pra dar uma estudada. Se você pegar antes, é mais provável que você não perceba muita coisa.
Estudar não mata :mrgreen:
Por que a galera de informática não gosta de ler heim?
Outra coisa, se você quer uma boa aplicação de exemplo, baixa o JForum, é 10 e não tem nenhum framework esquisito.
Já leu esse, Maurício? Eu comrepi no CJ. Legal que no domingo os caras colocaram no lugar onde ele estava outro de Spring, devem ter pensado: “aquele carioca otario vai gastar mais duzentas pratas agora”
Mas na real nem comrpei proque eh da wrox, e livro da wrox com mais de um autor nao presta, e tenho dito.
Microfilo, se eu conseguir colocar o codigod e exemplo online hoje aidna, voce pode baixar la. Na verdade, eu quero colcoar o conteudo do minicurso num pdf.
Homi, coloca esse negócio no ar logo! Vocês gravaram áudio ou vídeo lá?
Eu gostei Phillip, fala de quase tudo. Conceitos básicos de IoC e IoC no Spring, AOP, suporte a bancos de dados (JDBC, Hibernate e iBatis), controle de transações (com e sem JTA), remoting e suporte a EJBs, agendamento com Quartz e Timer, MVC (do Spring) e integração do o Struts. Na parte do Spring MVC também fala de como usar ele com JSPs, Velocity, FreeMarker e XSLT. No fim fala um pouco sobre o RCP do Spring, mas o projeto anda meio parado.
Faltou falar sobre o Acegi, integração com JSF, a versão do Hibernate é 2 (as mudanças pra 3 são apenas os pacotes, mas mesmo assim né…), também não falou sobre integração com SiteMesh (tem no livro do Raible, mas me disseram que ele não é muito bom não…) e o WebFlow (nenhum livro abordou o WebFlow ainda).
Você comprou por duzentas pilas velho? Ave maria! :shock:
Eu comprei pela amazon e saiu uns 100 reais.
O da Wrox eu achei interessante, porque tem o Rod Johnson e o Juergen Hoeller, mas livro com muitos autores é complicado mesmo. Parece que ele nunca segue um caminho reto e os caras não costumam referenciar o resto do livro :lol:
o Spring in action fala um pouco do acegi, nao sei se suficiente porque aidna nao usei.
160
O to terminando o “without EJB”, mas quandoa cabar acho que vou ler algo mais light, gerencia agil ou cosia do tipo. Tenho que vencer a tentação de só ler livros altamente técnicos o tempo todo
Ataulmente tem Managing Agile Projects, Peopleware e Surviving Object-oriented Projects na fila.
Eu to terminando o PoEAA e to indo (provavelmente) pro “without EJB”.
To pensando em pegar mais algumas coisas sobre desenvolvimento ágil (li o novo XP explained em duas noites, o livro é d+), mas num sei pra onde ir. Alguma dica?
basicamente de Design, ams um foco ágil muito enormemente grande: http://www.objectmentor.com/resources/bookstore/books/AgileSoftwareDevelopmentPPP
vamos lá…
fazendo uma aplicação aqui usando o mentawai, pensei em como colocar persistência em camadas…
deêm uma olhada, me digam o que vocês pensam
public class Noticia {
private String titulo;
private String corpo;
private Date dataPublicacao;
private boolean estaPublicada;
private GerenciadorDePersistencia gerenciadorDePersistencia;
// getters e setters
public static List list(){
return gerenciadorDePersistencia.list(Noticia.class);
}
public void publicar() {
if (!estaPublicada) {
this.estaPublicada = true;
gerenciadorDePersistencia.update(this);
}
}
// entre outros
}
O gerenciador de persistencia seria um tipo de DAO, no caso um DAO gerenérico para o hibernate.
eu chamaria o método publicar\listar\cadastrar\etc em uma action e criaria o gerenciador de persistência no construtor ou injetaria com IoC…
esse esquema seria o esquema ideal para persistência?
Você vai guardar em um flag se a notícia está publicada ou não?
Cadê o identificador dela?
O Active Record é mais ou menos assim mesmo.
[quote=Maurício Linhares]Você vai guardar em um flag se a notícia está publicada ou não?
Cadê o identificador dela?
O Active Record é mais ou menos assim mesmo.[/quote]
esqueci do Id…
eu preciso guardar o flag sim, o esquema vai ser parecido com o do php-nuke, o cara manda a notícia e os admins aprovam ou apagam ela, por isso preciso da flag…
o que falta para ser um Active Record?
[quote=microfilo]eu preciso guardar o flag sim, o esquema vai ser parecido com o do php-nuke, o cara manda a notícia e os admins aprovam ou apagam ela, por isso preciso da flag…
[/quote]
E onde é que ela fica antes de ser publicada? Se esse “publicar” for o método “save” de AR, enquanto ela não for publicada ela vai ficar na memória?
Os “entre outros”.
Já que você quer mesmo trabalhar com AR, defina uma interface comum, com os métodos CRUD, que todos vão implementar, melhor do que cada um chamar o método de um jeito diferente. Botar o getId e o setId nela também é uma boa.
essa conversa me deu sede
pronto
eu bebi a água.
e estava bem geladinha.