1 . Padrão Singleton:
- Garante que apenas uma instância de uma classe seja criada e fornece um ponto de acesso global a ela.
- Útil quando você precisa limitar o número de instâncias de uma classe e fornecer uma única instância compartilhada em todo o seu aplicativo.
2 . Padrão Prototype:
- Permite criar novos objetos clonando objetos existentes.
- Em vez de instanciar novos objetos do zero, você pode usar um protótipo como um modelo para criar cópias com propriedades pré-inicializadas.
- Isso ajuda a reduzir o custo de criação de objetos e permite a configuração dinâmica em tempo de execução.
3 . Padrão Factory:
- Encapsula a lógica de criação de objetos, permitindo que você crie objetos de diferentes classes de maneira uniforme.
- Isso torna o código mais flexível e facilita a troca de classes sem afetar o código que as usa.
4 . Padrão Adapter:
- Converte a interface de uma classe em outra interface que o cliente espera.
- Isso permite que você use classes incompatíveis entre si ou adapte interfaces legadas para novas APIs.
5 . Padrão Facade:
- Fornece uma interface simples para um subsistema complexo, ocultando a complexidade interna e facilitando o uso do subsistema.
- Isso torna o código mais fácil de entender e usar, e reduz o acoplamento entre o código cliente e o subsistema.
6 . Padrão Proxy:
- Fornece uma camada de abstração entre um objeto e seu cliente.
- Isso permite que você adicione funcionalidade adicional ao objeto, como segurança, cache ou log, sem modificar o próprio objeto.
7 . Padrão Iterator:
- Permite percorrer uma coleção de objetos de forma sequencial sem expor a implementação interna da coleção.
- Isso torna o código mais flexível e reutilizável, pois permite que diferentes algoritmos percorram a mesma coleção.
8 . Padrão Observer:
- Define uma relação um-para-muitos entre objetos, de modo que quando um objeto muda de estado, todos os seus dependentes são notificados.
- Isso permite que você implemente sistemas de notificação e atualizações automáticas.
9 . Padrão Mediator:
- Define uma classe central que gerencia a comunicação entre vários objetos.
- Isso torna o código mais fácil de entender e manter, pois reduz o acoplamento entre os objetos e centraliza a lógica de comunicação.
10 . Padrão State:
- Encapsula o estado de um objeto em classes separadas e permite que o objeto altere seu comportamento quando seu estado muda.
- Isso torna o código mais flexível e reutilizável, pois permite que você altere o comportamento de um objeto sem modificar sua classe base.
Benefícios do uso de Design Patterns: - Código mais flexível e reutilizável: Os design patterns fornecem soluções reutilizáveis para problemas comuns de design de software, o que facilita a criação de código mais flexível e reutilizável.
- Comunicação mais fácil entre desenvolvedores: Os design patterns fornecem uma linguagem comum para discutir e implementar soluções de software, o que facilita a comunicação entre desenvolvedores.
- Código mais fácil de entender e manter: Os design patterns geralmente tornam o código mais fácil de entender e manter, pois eles organizam o código de maneira lógica e utilizam princípios de design bem estabelecidos.