Tem que ver exatamente de quais críticas ou elogios vc está falando. Mas enfim...

Basicamente, um Design Pattern é uma descrição de uma solução reusável para um problema conhecido ("se vc tem uma situação XYZ com tais características, uma possível solução é fazer A, B e C desta forma").

O problema - como acontece com praticamente tudo na nossa área - é o abuso ou uso errado. É achar que um DP é solução universal e tentar aplicá-la pra tudo, inclusive nos casos em que ela não é a melhor solução.

Foi essa a crítica que vc viu? Pois pra mim é o principal problema. Perceba que não é o DP em si, e sim quando usam de forma errada.


Nenhuma tecnologia é solução universal, tudo depende do contexto. Tem casos em que é adequado, em outros casos piora as coisas, e tem casos em que tanto faz.

O que os DP fazem - pelo menos é assim que eu vejo - é no máximo sugerir que, para a maioria dos casos em que seu problema se assemelha à descrição do DP, a solução proposta se mostrou bem adequada. Mas não é uma lei sagrada que deve ser seguida cegamente pra todos os casos.

Como sempre, tem que avaliar o contexto. E pra avaliar bem precisa conhecer as opções, os prós e contras de cada uma e só aí decidir. Nenhum DP é obrigatório, vc usa se o seu caso e contexto indicar que precisa. Vc identifica o problema e aplica a respectiva solução, o ruim é quando fazem o contrário (tentar encaixar um DP de qualquer jeito, mesmo quando ele não serve).

Isso vale pra tudo, seja SOLID, clean code ou seja lá qual for a moda atual ou futura. Sempre depende.

Sobre só ser útil em C++ e Java, meu chute é que isso é um efeito colateral do famoso livro do GoF, que fez muita gente acreditar que DP só é possível em linguagens orientadas a objeto - o que não é verdade, dá pra implementar até em C, por exemplo.

Enfim, é isso. Não gosto desses "mantras" absolutos do tipo "sempre faça" ou "nunca use". Salvo raríssimas exceções, o ideal é analisar caso a caso, levando em conta as circunstâncias específicas e os prós e contras de cada solução.

Foi essa a crítica que vc viu?

Sim, exatamente! Esta citação se repetiu muito. Porém vi algumas sobre adicionar complexidade desnecessária, que seria melhor se não houve tal padrão e dar mais espaço a "flexibilidade".

Seu comentário complementa muito bem o do @clacerda disse. Simplesmente sensacional sua perpectiva. Com isso eu estou decidido a estudar mais sobre, mas com cautela para filtrar verdades e mentira, além de evitar o erro da aplicação errada! Valeu pelo o comentário!

De fato o GoF é muito culpa o abuso, das críticas, das ideiais erradas. Inclusive a maioria das pessoas acham que DP é só o que está naquele livro. E mesmo eles são questionáveis individualmente.

A maior crítica que eu posso fazer nesses mais conhecidos é que não foram bem explicados, e há um entendimento das pessoas que eles são o suprasumo da programação e assim se você soubê-los e ficar enfiando eles no seu código você não precisa aprender a programar de verdade.

Vou fazer uma pergunta para OP e aos variados leitores (não para o kht), você sabe o que é design pattern? A maioria das pessoas não sabem, aí elas não podem nem discutir o assunto, quanto mais elogiar ou criticar. Ela normalmente está falando de pouco mais de uma dúzia deles que muitas vezes são para ajudar a pessoa a sair do problema que se meteu usando OOP com suas limitações.

A mentira foi tão repetida que hoje quase todo mundo acredita que seja verdade o que está escrito no GoF e as pessoas falam sobre algo que nem é correto.

As pessoas não sabem que elas podem criar os DPs delas, mesm oque não fique famoso. Que pode ser tão útil que pode ter uma implmentação pronta para uso. Então como vão saber quando é útil de fato, quando trará problemas, quando encaixa no seu contexto? Tem que estudar toda a computação e saber raciocionar.

A outra grande crítica que eu faço, e já feita acima é que as pessoas passaram usar como receita de bolo e não como uma forma de aprender fazer algo melhor. DPs são uma forma específica de "boas práticas", por isso vou fazer um vídeo baseado na minha palestra, chamada "A péssima prática de seguir boas práticas".

S2


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente (não vendo nada, é retribuição na minha aposentadoria) (links aqui no perfil também).