DESIGN PATTERNS melhores e mais usados

Olá amigos,

Gostaria de começar a aprender a usar design patterns, e queria que vocês me recomendassem quais são os patterns mais usados, para que eu possa ter uma referência de estudo.

Um abraço, valeu!

[quote=“Davisao”]Olá amigos,

Gostaria de começar a aprender a usar design patterns, e queria que vocês me recomendassem quais são os patterns mais usados, para que eu possa ter uma referência de estudo.

Um abraço, valeu![/quote]

Command Factory, Data Transfer Objects são super usados! mas o TOP é o MVC, alguns dizem que não é Pattern mas é pois está na lista de patterns da Sun!

Dá uma olhada ai http://java.sun.com/blueprints/patterns/catalog.html

Atn.
Dennys Fredericci
http://www.dennys.eti.br

Singleton, Abstract Factory, DAO e MVC são muito usados.

Existem muitos patterns além desses que a Sun recomenda. Qualquer um pode criar um pattern novo.

Você deve ter em mente que os patterns são soluções para problemas específicos e/ou limitações da linguagem e projeto. Um projeto que usa Design Patterns não é necessariamente bom, assim como um que não usa não é necessariamente ruim.
Antes de usar um pattern analise seu código e veja se não é por falha de projeto que você está precisando usar um pattern.

Dê uma olhada no pattern Decorator também, nesse link tem o capítulo 3 do livro de Patterns da série Head First, pela amostra é muito bom:
:arrow: Chapter 3: The Decorator Pattern

Recomendo que você leia o livro da GOF (Gang of Four),
depois que ficar bom nos patterns “normais”, ai dê uma olhada nos patterns para J2EE.

Para começar, se você souber usar bem o Singleton, Façade e Adapter já é um ótimo começo.

Na verdade todos são super usados… tudo depende da aplicação que vai ser feita…

por isso conhecer todos te da uma base para decidir qual usar… mas não tente querer usar todos… impossível… existem alguns inclusive concorrentes…

cya!

Considerando uma situação prática: desenvolvimento de um sistema para uma locadora, sabe aquela legalzinha onde vc sempre dá uma passada pra pegar um filme naqueles finais de semana em que a grana tá curta…
Deveria-se considerar o uso de um design pattern?
Qual? Ou quais…?

Abraços a todos!!

claro ué… mas quais tu vai usar vai depender da arquitetura física e lógica da aplicação… ué =p

Não é assim que funciona

Design patterns são aplicados a uma situação específica. Não da para vc dizer “para um sistema de locadora, utilizamos tais patterns”

[quote=“Samuel_Pessorrusso”]Não é assim que funciona

Design patterns são aplicados a uma situação específica. Não da para vc dizer “para um sistema de locadora, utilizamos tais patterns”[/quote]

Concordo com o Samuel.

Digamos que vc poderia exemplificar assim:

  • “Uso o pattern Command para executar uma ação no meu sistema. Ex: Registrar a saída de uma Fita!”
  • “Uso uma Factory para evitar muito acoplamento em minha aplicação.”

Porém vc decide como usar, e onde!
Acho qeu umas quantas lidas nos padrões vão te ajduar a “decifrar” essa charada, pois são bem “conceituais” por assim dizer.

Abraços!

Padrões de Projeto é complicado dizer quais são mais usados ou menos.
Primeiramente é importante compreender os padrões GoF. Você verá que alguns padrões podem ter mais probabilidade de ser usado, pode ser que o Singleton tenha mais chances de ser necessário em um projeto do que o Strategy, mas mesmo assim não justifica que o Singleton é mais importante que o outro. Cada caso é um caso.

Todos os padrões tem probabilidade de poderem serem utilzados em um determinado projeto, depende de uma boa análise.

Também é importante ressaltar, que em alguns casos, a utilização excessiva de padrões pode não trazer exatamente resultados positivos.

Concordo com a opiniao do dok e as de outros colegas…Design Patterns não são para serem utilziados em demasia, são necessários análise e designs efetivos do sofware para decidir qual design pattern utilizar em determinado momento…Como dissera, os estudos e a experiência vão contar no momento de decidir qual o pattern a ser utilizado.

E utilizar patterns em demasia também não é muito recomendável…

eu sou um Action\Commandmanico…
é uma das minhas patterns favoritas! eu curto usar fora do contexto J2EE mesmo!
Action + ActionFactory rulez!

dá pouco trabalho para implementar, mas faz com que seu sistema possa ser acresido de novas funcionalidades fácilmente, só criar um classe Action e colo car no actionFactory! simples assim!

meu professor pediu para fazer um chat, todos estão fazendo do jeito coxo, lendo da rede e fazendo dezenas de ifs para verificar o que o usuário requisitou… eu sou o unico que fiz uma actionFactory para isso… é show d+…

[quote=“microfilo”]
meu professor pediu para fazer um chat, todos estão fazendo do jeito coxo, lendo da rede e fazendo dezenas de ifs para verificar o que o usuário requisitou… eu sou o unico que fiz uma actionFactory para isso… é show d+…[/quote]

q bonito! uheahuaehu :lol:

A escolha de um pattern depende do problema q vc queira resolver, mas assim de cara eu aconselharia o MVC, q por ser um padrão arquitetural vai te ajudar a organizar a tua aplicação e em conjunto com ele o observer q está inserido no MVC

[quote=“microfilo”]
meu professor pediu para fazer um chat, todos estão fazendo do jeito coxo, lendo da rede e fazendo dezenas de ifs para verificar o que o usuário requisitou… eu sou o unico que fiz uma actionFactory para isso… é show d+…[/quote]

Bacana… mas sempre tenha em vista que o uso de Design pattern é para facilitar manutenções futuras. É bacana você já ir usando na faculdade para ir aprendendo mas com o tempo você vai perceber que tem horas que não vale a pena utilizar patterns, principalmente quando você não tem tempo, quando seu programa é pequeno ou quando ele não será alterado.
Se eu ainda estivesse na universidade com certeza faria tudo do jeito coxa, já no mercado é diferente, se você fizer do jeito coxa vai sentir na pele a cagad* quando for dar manutenção.

Resumindo… nem sempre a melhor solução é a ideal para determinada solução.

Regards
Sam

O que acontece por aí é que alguns arquitetos querem provar sua superacia colocando padrões demasiadamente nos projetos , acarretando o que eu chamo ‘excesso de purismo’, tornando o sistema complexo e que muitas vezes não sai da linda fase de modelagem, ou quando sai, os programadores começam a desenvolver Orientado a Padroes Projeto.

Prefiro usar padrões quando realmente são necessários, e não somente para impressionar o gerente.

Os padrões são divididos em tipos, ou seja, tem alguns que provavelmente sempre existirão, pois são padrões de criação, e toda aplicação considerada ‘um pouco grande’ você precisa usar um Abstract Factory ou um Factory Method, ou DI IoC, etc… . Ou seja, categorias (criação, estrutural, comportamental) de padrões podem estar presentes em todo projeto, mas dentre os existentes qual se adequa melhor, depende do seu problema, ou também da escolha :).

É bom conhecer todos sim, até se possível criar um, porque não ? :slight_smile:
Isso facilita a comunicação entre os membros da equipe do projeto assim como o código produzido com qualidade.

galera, todos estão falando que não é sempre que é bom utilizar, não utilizar todos ao mesmo tempo, e tals…

eu me interessei pelo assunto, mas gostaria de saber se vocês poderiam dar alguns exemplos de como funciona (bem resumido mesmo) e pra que servem as principais, ou talvez as que vocês utilizem…

é provável que eu use algum mas não saiba… auehauehauhe

MVC utilizo bastante no trabalho, com e sem struts…

mas e vocês??

um abraçooo!!

Não vou explicar como usar cada um… acho mais fácil ler um livro.

Mas os que eu mais utilizo são (não está na ordem):

  • MVC
  • Observer
  • Abstract Factory
  • Factory Method
  • Simple Factory
  • Singleton
  • Command
  • Strategy
  • Facade
  • Template Method
  • Mediator (somentes para aplicações desktop)

Outros:
*Intercepting Filter

  • Service Locator
  • Business Delegate
  • Session Facade (para Helpers pois não gosto de Entity Beans)
  • Value Object
  • DAO

Estes são os que mais uso, mas já tive que usar outros como Composite, Visitor, Chain of Responsibility e o interpreter (para um tipo de compilador que lia comandos do usuário).

Regards…

Samuel

aee!!! agora sim mandou bem… auehauehaue

é isso ae galera… valeu!!