Padrão de projetos

Galera, alguem sabe algum site, tutorial ou se quizer postar aqui tbm agradeço.

O grande problema que estou tendo é em relação a como criar um bom projeto orientado a objeto para web em java.

Os principios de um bom projeto eu sei(pelo menos alguns), porem na pratica não consigo por pra funcionar. Por exemplo, a questao de reutilização de codigo, nao repetir trechos de codigo, etc…

Eu tenho as vezes trechos que sao muito usados, mais as vezes so uso um pouco, as vezes outro trecho grande, em fim, varias partilhas de codigo que uso em varios cantos, qual seria a locução para nao repetir isso? Criar metodos que executem essas partilhas de codigo? E entao aonde precisar ficar fazendo as chamadas? Eu acho isso nao muito legal, pois ficaria muitos metodos para fazer coisas pequenas.

Em relacao a sobrescrita de metodos por herança, Se eu tenho uma rotina que sera usada por varios tipos especificos, eu crio uma classe e mando as outras classes herdarem dela, ate ai tudo bem, porem varios metodos precisar ser interceptados em varias partes, ai no caso o que eu faria? Se eu sobrescrever ele eu terei que fazer varias rotinas repetidas la para simplesmente inserir codigo no meio, fim, enfim, em varias partes, ai repete codigo. Se eu chamar o metodo pai pelo super, eu executarei todo o codigo em um momento, o que nao é o que eu gostaria, gostaria de interceptar partes do codigo. Em fim, tem muitas questoes que nao vejo solucoes ideais, gostaria de algum projeto simples e bem orientado como exemplo, ou tutoriais, etc. Agradeço qualquer ajuda. Abraços.

Ve se lhe ajuda em alguma coisa…

Eu tenho o costume de usar o padrão Abstract Factory… isso vc evita ficar, for example, instanciando o mesmo objeto várias vezes…

tipo…

vc cria uma classe Factory e declara uma constante, como mostro abaixo

public class Factory {

private static final ClienteController clienteController = new ClienteController();

public static ClienteController getClienteController(){
    return clienteController;
} 

}

depois vc faça isso…

ClienteController cliente = Factory.getClienteController();

Espero ter dado alguma ajuda…

Sds

Isso até pode ser um bom encapsulamente, mais no caso agente só precisaria de uma factory caso a criação do objeto precisase fazer varias rotinas padroes, ai é interessante uma factory, mais nesse caso o cara da um new no objeto é menos dispendioso, mais o meu grande problema ainda nao é esse, e sim fazer um codigo flexivel para possiveis alterações e anti-padroes que possam vim, sem precisar ficar repetindo codigo, entende?

[color=blue]Você pode postar pra mim um treço de seu código ?

Talvez eu lhe de uma boa solução através dele…

Sds…[/color]

[quote=Weslley][color=blue]Você pode postar pra mim um treço de seu código ?

Talvez eu lhe de uma boa solução através dele…

Sds…[/color][/quote]

Blza mano, vou explicar mais ou menos e mostrar o codigo para vc entender.

Eu estou desenvolvendo uma aplicação web usando dojo e J2EE.
Eu criei padroes tanto de inferface como de servidor que posibilita inserir facilmente um registro de um form em uma tabela, pasando da interface pro servidor. Esse padrao de inserir no servidor é unico, ou seja, ele funciona para qualquer tabela, com ou sem mestre detalhe, etc. Porem existe uma coisa que são regras de inserção, essas regras são peculiares e podem ter infinitas possibilidades. Ai entra o problema, pois para implementar essas regras o padrao tem q ser quebrado, ou… interceptado. Vou mostrar um trecho do codigo de inserir:

                                GenericDAO dao = new GenericDAO();
		try {
			PadraoBean bean = ServletUtil.tratarBeanRequest(request, getClassBean());
			
			bean = Utils.setaEmpresaBean(bean, request);
			
			dao.beginTransaction();
			
			bean = dao.cadastrar(bean);

			dao.transactionCommit();
			
			dao.fecharConexao();

			JSONUtilsPlain jsUt = new JSONUtilsPlain();
			
			return jsUt.getJSONAllCamposComPksEFks(bean).toString();

		} catch (Exception e) {
			dao.fecharConexao();
			e.printStackTrace();
			return TrataRetorno.retornaErroTratado(e);
		}

Esse codigo é simples, ele simplesmente pega o objeto request q contera os parametros do bean com o mesmo nome dos atributos dele, e setará os valores automaticamente em um objeto usando reflections, o objeto em mao, eu mando o hibernate inseri-lo. Tudo bem, ate ai ok, vai funcionar para qualquer tipo de inserção, porem existe casos que eu só vou querer inserir se alguma coisa, ou entao fazer algo antes de inserir, ou entao fazer algo depois, ou entao inserir de uma forma diferente, em fim, milhoes de posibilidades. Ai que tá, o que eu faria? Inseriria metodos a cada linha de codigo de forma que o programador sobrescrevese ele e fizese alguma coisa? bom, nao acho elegante, e sem falar que amarra ele a implementação padrao. Me diga uma boa solução para isso. Obrigado.

[color=blue]Conhece o Padrão MVC ? ou simplesmente desenvolvimento em 3 camadas ?

Pois é… antes de vc persistir o obj no Banco, vc pode fazer inúmeras validações antes…

Você separa a lógica da aplicação (ou simplesmente regra de negócio, como preferir) da persistencia no banco e tbm da parte visual (interface do usuário)… É na lógica da aplicação que vc pode fazer as tais validações q deseja…

No site da Caelum tem um tutorial, se eu não me engano tem o nome de FJ-21, tem um tópico q fala sobre o MVC…

É ótimo esse material…

Se for do seu agrado, aconselho…

Sds…[/color]

Sim eu conheco o mvc, inclusive estou tentando fazer em cima disso. A interface já está totalmente indepentende do servidor, ou seja, so existe comunicacao via JSON entre eles, nao existe um codigo java na interface, apenas javascript. Isso ai é o controle, tudo bem eu posso fazer varias validações, mais aonde? Vou dar uma olhada nesse tutorial pra ver se me esclarece um pouco hehe. Vlw amigo.

Eu nao consegui baixar a apostila.

[color=blue]blz…

me manda teu e-mail q eu envio pra vc…

tenho ela salvo…

Sds[/color]

Esta na sua caixa de entrada :), vlw