linguagens modernas; • Normalmente usado com o padrão MVC para a comunicação entre suas camadas; • Auxilia na comunicação de objetos distantes; • É Async provavelmente tem ele!
para conectar diferentes interfaces de forma consistente. Ele provê uma interface compatível com o código-cliente usando internamente a interface original."
É uma caixa preta capaz processor um input para produzir o output desejado; • Facilita a conversão de tipos e a integração entre diferentes bibliotecas.
elementos possuem a mesma interface, embora o comportamento interno seja particular a cada um • É normal aparecer junto de outros padrões de projeto (strategy, dependency injection, etc) • Auxilia na implementação de testes automatizados • É o cara para criar objetos dinâmicamente!
elementos de uma coleção • A estrutura interna, usada para armazenar os itens da coleção, torna-se irrelevante para o programador-usuário • Possibilita a criação de Coleção de Objetos ao invês de uso de tipos nativos (array, map);
classe que funciona como uma interface para outra classe. A classe proxy poderia conectar-se a qualquer coisa: uma conexão de rede, um objeto grande em memória, um arquivo, ou algum recurso que é difícil ou impossível de ser duplicado." Wikipédia
métodos estáticos • Classe de um único objeto • Amplamente usada com bibliotecas de logging/debugging • Controverso, muitas vezes considerado um anti-pattern • É um inferno para testar!
nem ser um padrão de tão simples! • Torna seu código testável e auxilia no desacoplamento do código (avoid no new) • DIC ajudam na instância de objetos com multiplas depêndecias (aninhados) •