Padrões de Projetos Básicos?

Olá galera,

Pessoal atualmente estou trabalhando com PHP e apesar de certo preconceito e muitos não gostarem ainda vejo boas oportunidades na linguagem.

E tenho visto e recebido boas propostas de empregos, e vendo outras ainda melhores pra quem já tem vivencia com padrões de projetos.

Mas enfim, como padrões acredito que possam ser implementados em qualquer linguagem OO gostaria de algumas dicas, sobre as mais básicas e por quais começar.

Já li que existem vinte e poucas mais usadas e tal, como vou começar estudar padrões é um pouco complicado tentar entender corretamente mais de vinte tipos e conseguir usar corretamente.

Minha pergunta é quais vocês acham que todo programador obrigatoriamente deveria saber. Claro que vou estudar todas as possíveis com o passar do tempo, mas queria saber as que são usadas com mais frequência.

Quanto a conteúdo vou ver se pego os livros Use a Cabeça! Padrões de Projetos e o do Erich Gamma. Se também tiverem dicas sobre sites, livros etc agradeço.

Abraço!

Faça exatamente o que você disse, leia o Head First: Design Patterns e depois o GoF.

O Head First tem menos padrões do que o GoF. Acho que 9 a menos, que são resumidamente abordados depois. Ou seja, ele já aborda os mais utilizados.

Mas é importante ler os dois.

Recomendo a leitura de Design Patterns Explained.


(tem em portugues também)

O que todo programador tem que obrigatoriamente saber é:

  • Favor composition over inheritance
  • Program to interfaces not implementations

[quote=wagnerfrancisco]Faça exatamente o que você disse, leia o Head First: Design Patterns e depois o GoF.

O Head First tem menos padrões do que o GoF. Acho que 9 a menos, que são resumidamente abordados depois. Ou seja, ele já aborda os mais utilizados.

Mas é importante ler os dois.[/quote]

Obrigado, wagnerfrancisco.

Quanto ao Head First: Design Patterns, disseram que a tradução em portuga não é lá essas coisas…

Mas como vergonhosamente meu inglês é quase zero vai em portuga mesmo :frowning: Inglês faz MUITAAA falta!!

Vlw cara!

[quote=rogelgarcia]Recomendo a leitura de Design Patterns Explained.


(tem em portugues também)

O que todo programador tem que obrigatoriamente saber é:

  • Favor composition over inheritance
  • Program to interfaces not implementations

[/quote]
rogelgarcia,

Dei uma pesquisada e esse livro parece realmente bacana, apesar de não ser tão conhecido como os outros.

Se achar alguma loja que tenha os três já incluo pra parcelar em 300x :lol:

Vou pesquisar sobre as outras dicas também…

Valeu!!

Eu li há muito tempo atrás, também não sacava muito de inglês na época e li em português.

Não era tão ruim que prejudicasse a leitura. E o GoF tem uma tradução bem boa.

Não faz parte da pergunta… Mas todo programador, antes de saber design patterns, tem que saber ingles.

Acho que voce já sabe disso, mas é só para te dar um incentivo.

Estude inglês!!!

Por mais que hoje existam bons materiais em portugues, nada se compara com o que tem em ingles.

Eu digo que eu nao saberia metade do que sei sobre computação, se não soubesse ingles.

Então, procure um curso de ingles para fazer. É o melhor investimento que você faz.

:wink:

O padrão predominante em projetos java é o POG.

[curti] rs

Porém… descordo… Tem outras linguagens mais orientadas a gambiarra do que java…

Pessoal me desculpe pela demora em responder, começo de semana ta tenso!

[quote=wagnerfrancisco]Eu li há muito tempo atrás, também não sacava muito de inglês na época e li em português.

Não era tão ruim que prejudicasse a leitura. E o GoF tem uma tradução bem boa.[/quote]
Ah bacana, ainda não tive tempo de comprar mas em breve vou pegar pra ler.

[quote=rogelgarcia]Não faz parte da pergunta… Mas todo programador, antes de saber design patterns, tem que saber ingles.

Acho que voce já sabe disso, mas é só para te dar um incentivo.

Estude inglês!!!

Por mais que hoje existam bons materiais em portugues, nada se compara com o que tem em ingles.

Eu digo que eu nao saberia metade do que sei sobre computação, se não soubesse ingles.

Então, procure um curso de ingles para fazer. É o melhor investimento que você faz.

;)[/quote]
É cara realmente sem inglês é tenso. Eu por exemplo na primeira semana meu chefe já me deu umas vídeos aulas em inglês de um framework de php.hehehe
Aí pra não ficar sem aprender a bagaceira tive que ir atrás da documentação (também em inglês) e ir traduzindo e estudando. Trampo desgraçado!!
Mas quanto ao curso já estou correndo atrás. Tenho no mínimo que aprender ler bem por enquanto que já ajuda muito…
Valeu pelo toque!

[quote=JoseIgnacio]O padrão predominante em projetos java é o POG.
[/quote]
Cara nunca cheguei a de fato trabalhar com java, já dei uma estudada pra certificação e tenho contato na facul.
Agora em PHP cara oque se vê de POG não é brincadeira hehehe Dificilmente se acha um código que não tenha kkkkk
Acho que é muito por isso que muitas vezes a linguagem não é levada a sério! Ou taxada por muitos como linguagem dos sobrinhos rsrs

Abraços!

Os padrões de projeto são gerais para qualquer programação OO.

Aqui tem uma lista de padrões (com implementações em java).

Os mais básicos são

Adapter - Permitir que um objeto seja utilizado através de um contrato diferente.
Builder - Prover uma forma de facilitar a montagem ou construção de objetos que seria complexa ou aborrecida quando feita manualmente.
Composite Object - Permite que uma hierarquia de objetos seja tratada como um objeto só.
DAO - Prover isolamento da tecnologia de persistência.
Decorator - Permitir alterar o comportamento que um objeto que já está implementado e/ou adicionar funcionalidade a objetos que já existem e não podem …
Factory - Permitir que a criação de um objeto seja controlada por outro objeto.
Factory Method - Encapsular a criação de um objeto em um método.
Fast Lane Reader - Fornecer acesso rápido a coleções de dados em camadas inferiores, diminuindo a criação de objectos sem violar os contratos entre camadas…
Money - Prover manipulação correta de quantidades monetárias.
Paginator - Separar o conteúdo em grupos de itens (páginas) e controlar a navegação entre as páginas.
Property Bag - Agrupar um conjunto de propriedades numa unidade lógica.
Proxy - Representar um objeto complexo, por um objeto mais simples.
Quantity - Permitir representar uma quantidade pela associação de uma quantia e uma unidade.
Query Object - Permite estabelecer um critério de pesquisa de forma orientada a objetos.
Ratio - Permitir manipular frações minimizando as operações de divisão.
Register - Prover uma forma de objetos contactarem outros objectos de forma desacoplada de ambos.
Service - Estabelecer um contrato implementável de diferentes formas.
Service Locator - Localizar a implementação de um serviço.
Singleton - Restringir a instanciação de objetos de uma classe a um único objecto.
Static Factory Method - Documentar e/ou simplificar a criação de um objeto substituindo o uso do construtor por um método estático explicito.
Value Object - Encapsular um valor em um objecto.

Espero que aproveite.

[quote=sergiotaborda]Os padrões de projeto são gerais para qualquer programação OO.

Aqui tem uma lista de padrões (com implementações em java).

Os mais básicos são

Adapter - Permitir que um objeto seja utilizado através de um contrato diferente.
Builder - Prover uma forma de facilitar a montagem ou construção de objetos que seria complexa ou aborrecida quando feita manualmente.
Composite Object - Permite que uma hierarquia de objetos seja tratada como um objeto só.
DAO - Prover isolamento da tecnologia de persistência.
Decorator - Permitir alterar o comportamento que um objeto que já está implementado e/ou adicionar funcionalidade a objetos que já existem e não podem …
Factory - Permitir que a criação de um objeto seja controlada por outro objeto.
Factory Method - Encapsular a criação de um objeto em um método.
Fast Lane Reader - Fornecer acesso rápido a coleções de dados em camadas inferiores, diminuindo a criação de objectos sem violar os contratos entre camadas…
Money - Prover manipulação correta de quantidades monetárias.
Paginator - Separar o conteúdo em grupos de itens (páginas) e controlar a navegação entre as páginas.
Property Bag - Agrupar um conjunto de propriedades numa unidade lógica.
Proxy - Representar um objeto complexo, por um objeto mais simples.
Quantity - Permitir representar uma quantidade pela associação de uma quantia e uma unidade.
Query Object - Permite estabelecer um critério de pesquisa de forma orientada a objetos.
Ratio - Permitir manipular frações minimizando as operações de divisão.
Register - Prover uma forma de objetos contactarem outros objectos de forma desacoplada de ambos.
Service - Estabelecer um contrato implementável de diferentes formas.
Service Locator - Localizar a implementação de um serviço.
Singleton - Restringir a instanciação de objetos de uma classe a um único objecto.
Static Factory Method - Documentar e/ou simplificar a criação de um objeto substituindo o uso do construtor por um método estático explicito.
Value Object - Encapsular um valor em um objecto.

Espero que aproveite.[/quote]
sergiotaborda,
Show de bola cara… Muito bom o link.

Valeu mesmo,
Abraço!