[quote=Longino][quote=ViniGodoy]
O conceito de design pattern ser repetição de código só existe na sua cabeça. Na verdade, o Paul Graham escreveu um texto onde ele ressaltava que alguns patterns eram ser indicativos de onde as linguagens poderiam ser melhoradas, mas claro, os amantes de linguagens funcionais e trollers como você deturparam a definição e a elevaram ao extremo.[/quote]
Só na sua cabeça isso é ciência. Opiniões de um grupo de fulanos valem tanto quanto a de qualquer um, pois afinal de contas são apenas opiniões.
O conceito de Design Pattern foi criado devido às limitações inerentes a linguagem C++ e mais tarde muitas outras foram criadas para o Java.
O que acontece aqui é exatamente o que Paul Graham descreveu no texto dele, você acha que Design Pattern é normal porque você só consegue pensar em “Java” ou alguma linguagem imperativa similar. Se buscasse entender outros paradigmas, veria que muitos dos problemas só existem porque a linguagem de implementação é limitada, e não por causa de algum problema intrínseco ao domínio.[/quote]
A prova de que um pattern não é limitação da linguagem está na implementação de Singleton em Scala. A linguagem dá suporte ao padrão com a keyword “object”. Porque seria uma limitação da linguagem ? Entendam que esse argumento não faz sentido algum. O padrão é usado porque ele resolve um problema e é muito usado se resolve um problema comum. Mas “problema” aqui, não significa “defeito da linguagem” e sim “desafio em design orientado a objeto”. A implementação de Singleton em scala vai mais além e até ajuda a simplificar a linguagem (não ha static em scala, porque sempre é possivel associar um Singleton a cada classe). Outro padrão que scala oferece suporte melhor que java é o builder. Não tanto à criação do builder, mas ao seu uso. O mesmo acontece em groovy. Groovy ainda oferece suporte nativo a Decorator e Proxy, mas não a singleton. Nada disto significa que a linguagem é melhor ou pior.
Java também oferece uma forma nativa para implementar singleton (enum), mas isso não significa que haja uma problema na linguagem java.
O ponto é que se uma linguagem fornece um bom suporte a muito padrões então a programação é mais fácil (Scala se aproveita disto muito bem)
Padrões são solução iguais para desafio recorrentes no design OO, não na implementação (seja em que linguagem for). Discutir que os design patterns demonstram problemas na linguagens é pointless. Interessante é discutir é como os padrões , quando suportados pelas linguagens, as tornam melhores e a programação mais simples.
O texto citado nem sequer aborda este tema. Ele fala genericamente de “features” da linguagem. Isso pode ser qualquer coisa.
Ah! e javascript sim tem suporte a herança, só não tem suporte a clases [1], [2].