Definição: O padrão abstrato de fábrica fornece uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas. Esse padrão é particularmente útil quando um sistema precisa ser independente de como seus produtos são criados, compostos e representados.
Exemplo de uso: imagine desenvolver um software de simulação que possa representar diferentes ambientes (terra, mar, ar). Usando o padrão abstrato de fábrica, você pode definir uma interface de fábrica com métodos para criar vários tipos de animais e plantas e, em seguida, implementar diferentes fábricas concretas para cada ambiente, cada um sabendo como criar objetos específicos para esse ambiente.
Definição: O padrão de método de fábrica define uma interface para criar um objeto, mas permite que as subclasses decidam qual classe instanciar. Esse padrão delega a responsabilidade da instanciação do objeto a uma subclasse, promovendo o acoplamento solto.
Exemplo de uso: um aplicativo de gerenciamento de documentos pode usar o método de fábrica para criar diferentes tipos de documentos (texto, gráficos, apresentações). Cada tipo de documento terá sua classe de concreto e o método da fábrica na classe base decidirá qual documento criar com base na entrada do usuário, isolando o código do cliente das classes de documentos concretos.
Definição: O padrão do construtor separa a construção de um objeto complexo de sua representação, permitindo a mesma construção para representações diferentes. Esse padrão é útil quando um objeto precisa ser criado em várias etapas, e o processo de construção precisa ser o mesmo para representações diferentes.
Exemplo de uso: considere um construtor de automóveis que pode criar diferentes tipos de carros (esportes, SUV, conversível). Usando o construtor, o processo de construção desses carros pode ser padronizado em etapas diferentes (edifícios de chassi, motor, interiores), enquanto os detalhes específicos de cada tipo de carro são tratados por diferentes construtores de concreto.
Definição: A cadeia de padrão de responsabilidade permite passar uma solicitação ao longo de uma cadeia de manipuladores. Cada manipulador decide se deve processar a solicitação ou passá -la para o próximo manipulador na cadeia.
Exemplo de uso: em um sistema helpdesk, uma solicitação de suporte pode passar por diferentes níveis de suporte técnico. Cada nível examina a solicitação e decide se ela pode lidar com isso ou passá -la para o próximo nível. Isso evita acoplar o remetente da solicitação com o receptor específico e distribui a responsabilidade entre diferentes objetos.
Definição: O padrão de comando transforma uma solicitação em um objeto independente que contém todas as informações necessárias para executar a ação. Isso permite parametrizar métodos com diferentes solicitações, adiar ou fazer fila a execução de uma solicitação e apoiar operações de desfazer.
Exemplo de uso: em um aplicativo de automação residencial, comandos como ligar/desligar as luzes ou ajustar o termostato podem ser encapsulados nos objetos de comando. Esses comandos podem ser enviados por diferentes dispositivos, como smartphones ou tablets, e podem ser agendados ou desfeitos conforme necessário.
Definição: O padrão de protótipo permite copiar objetos existentes sem tornar o código dependente de suas classes. Cada classe prototipada implementa a interface do protótipo, que fornece um método para se clonar.
Exemplo de uso: em um jogo, em vez de criar objetos a partir do zero sempre em uma cena, um objeto 'protótipo' pode ser clonado para criar cópias idênticas. Isso é particularmente útil nos cenários de jogos, onde criar e destruir muitos objetos semelhantes pode ter desempenho intensivo.
Definição: O padrão de lembrança permite salvar e restaurar o estado anterior de um objeto sem revelar os detalhes de sua implementação interna. Esse padrão é útil para implementar recursos como desfazer em aplicativos que exigem a capacidade de reverter para os estados anteriores.
Exemplo de uso: imagine desenvolver um editor de texto que permita que os usuários desfazem alterações no texto. Cada vez que uma edição significativa é feita, o estado do editor é salvo em um objeto de lembrança. Se o usuário desejar desfazer as alterações, o editor poderá restaurar o estado de um desses objetos de lembrança, revertendo o texto ao seu estado anterior.
Definição: O padrão do mediador define um objeto que centraliza a comunicação e as dependências complexas entre os objetos conectados, promovendo o acoplamento solto e impedindo que os objetos se referam diretamente um ao outro. Isso permite um melhor manuseio de interações complexas e melhora a manutenção de código.
Exemplo de uso: considere um aplicativo de controle de tráfego aéreo. Em vez de permitir que cada aeronave se comunique diretamente com todos os outros (criando um sistema extremamente complexo), um mediador - nesse caso, a torre de controle - lida com todas as comunicações. As aeronaves se comunicam apenas com a torre de controle, que então direciona as ações de cada aeronave, como quando e onde pousar.
Definição: O padrão do método do modelo define o esqueleto de um algoritmo em um método, adiando algumas etapas a serem executadas por subclasses. Isso permite redefinir certas etapas de um algoritmo sem alterar a estrutura do algoritmo.
Exemplo de uso: pense em uma estrutura de teste automatizada. O método do modelo pode ser usado para definir uma estrutura de teste padrão, onde o método do modelo estabelece o fluxo de execução do teste (configuração, execução, limpeza). As subclasses de teste específicas podem então personalizar cada etapa implementando métodos para configuração, execução real de teste e operações de limpeza após o teste.
Definição: O padrão do observador estabelece uma relação um para muitos entre objetos, para que, quando um objeto muda de estado, todos os seus dependentes sejam notificados e atualizados automaticamente. Esse padrão é particularmente útil para implementar sistemas de notificação de eventos distribuídos, onde as alterações em um estado devem ser refletidas em tempo real em outros sistemas ou componentes.
Exemplo de uso: considere um sistema de gerenciamento climático em um edifício inteligente. Sensores de temperatura (editores) monitoram continuamente o ambiente e, em caso de alterações significativas, enviam atualizações para vários dispositivos (observadores), como ar condicionado e sistemas de aquecimento, que se ajustam de acordo para manter a temperatura ideal. Dessa forma, o sistema de controle climático pode reagir dinamicamente às condições ambientais sem intervenção humana direta, garantindo conforto e eficiência energética.
Definição: O padrão de estado permite que um objeto altere seu comportamento quando seu estado interno mudar. Parece que o objeto está mudando de classe. Esse padrão é útil para lidar com situações complexas de mudança de estado, reduzindo a necessidade de condições de ramificação (if-else ou switch) dentro do código.
Exemplo de uso: imagine desenvolver um aplicativo para gerenciar o ciclo de vida de um pedido on -line. O pedido pode estar em vários estados, como "processamento", "enviado", "entregue". Usando o padrão de estado, você pode definir uma classe abstrata de ordens com métodos como Process (), Ship () e Deliver (). Cada estado concreto (por exemplo, ProcessingState, ShippedState, DeliveredState) implementará esses métodos para lidar com as transições de estado adequadamente. O contexto (por exemplo, a classe de ordem) mantém uma referência ao estado atual e delega as operações do estado a objetos de estado concreto, permitindo assim o comportamento da ordem para mudar com base em seu estado atual sem intervenção direta do código do cliente.
Definição: O padrão de estratégia é um padrão comportamental que permite definir uma família de algoritmos, encapsulando -os em uma classe dedicada e tornando os objetos intercambiáveis nesse contexto. Essa abordagem permite algoritmos variados independentemente dos clientes que os usam.
Exemplo de uso: imagine um aplicativo de comércio eletrônico que precisa implementar diferentes estratégias de cálculo de impostos, dependendo do país do cliente. Com o padrão de estratégia, você pode definir uma interface de estratégia tributária com um método calculateTax () e, em seguida, implementar várias estratégias concretas para diferentes contextos tributários, como USTAXStrategy, EUTAXStrategy e AsiAtaxStrategy.
Definição: O padrão do iterador fornece uma maneira de acessar os elementos de um objeto agregado seqüencial sem expor sua representação subjacente. Esse padrão é particularmente útil para gerenciar diferentes modos de travessia de uma coleção.
Exemplo de uso: considere uma coleção de dados como uma árvore ou um gráfico. Usando o padrão do iterador, você pode fornecer acesso uniforme aos elementos dessas estruturas de dados complexas sem que o código do cliente tenha que lidar com as diferenças entre as várias estruturas. Por exemplo, você pode ter iteradores diferentes, como o Depthfirstiterator e o Brendhfirstiterator para atravessar um gráfico.
Definição: O padrão do visitante permite separar um algoritmo da estrutura dos objetos em que opera. Esse padrão fornece uma maneira de adicionar novas operações às classes existentes sem modificá -las.
Exemplo de uso: imagine ter um sistema de gerenciamento de clientes em um contexto de seguro. O padrão do visitante permite que um objeto atravesse uma lista de clientes e envie mensagens personalizadas sobre o seguro.
Definição: O padrão do adaptador permite que interfaces incompatíveis funcionem juntas. Ele atua como uma ponte entre duas interfaces incompatíveis, transformando a interface de uma classe existente em outra interface esperada pelos clientes.
Exemplo de uso: suponha que você tenha uma nova interface para renderizar gráficos, mas uma biblioteca existente oferece funcionalidade semelhante com uma interface diferente. Em vez de reescrever a biblioteca existente, você pode usar um adaptador para fazer com que a biblioteca existente funcione com a nova interface de renderização, permitindo assim a integração perfeita.
Definição: O padrão da ponte é um padrão estrutural que separa uma abstração de sua implementação, permitindo que eles variem de forma independente. É usado para dividir uma classe grande ou um conjunto de classes intimamente relacionadas em duas hierarquias separadas - abstração e implementação - que podem ser desenvolvidas e modificadas de forma independente.
Exemplo de uso: em um aplicativo de entrega de pizza, existem diferentes tipos de pizzas disponíveis, cada um com seu sabor exclusivo e diferentes tipos de restaurantes com diferentes estilos de cozinha. Quando um pedido de pizza é feito, o aplicativo usa o padrão da ponte para garantir que a pizza seja composta de acordo com as preferências do cliente e cozida seguindo o estilo específico do restaurante escolhido. Dessa forma, o padrão da ponte facilita a integração entre os diferentes tipos de pizzas e os vários estilos de culinária dos restaurantes, permitindo uma entrega eficiente e personalizada.
Definição: O padrão composto é um padrão estrutural que permite tratar grupos de objetos e objetos individuais uniformemente. Esse padrão organiza objetos em uma estrutura de árvore para representar hierarquias parcialmente em todo o lado. Ele permite que os usuários trabalhem com objetos individuais e composições de objetos uniformemente.
Exemplo de uso: imagine ter um sistema de gerenciamento de caixas de presente contendo itens individuais e outras caixas. O cliente cria uma caixa principal e adiciona alguns itens como livros e videogames, juntamente com uma caixa menor que contém um livro. O preço total de todos os itens dentro da caixa principal é calculado. O padrão composto permite tratar objetos individuais e composições de objetos da mesma maneira, simplificando o código e tornando as operações uniformes em objetos individuais e grupos de objetos.
Definição: O padrão do decorador é um padrão estrutural que permite adicionar responsabilidades adicionais aos objetos dinamicamente, sem alterar sua estrutura por meio da herança. Esse padrão fornece uma alternativa flexível para derivar classes estendidas para estender a funcionalidade.
Exemplo de uso: imagine ter um sistema de notificação. O padrão do decorador permite estender a funcionalidade de várias plataformas sociais. Dessa forma, as notificações podem ser enviadas através de vários canais sem modificar diretamente o código.
Definição: O padrão de fachada é um padrão estrutural que fornece uma interface unificada para um conjunto de interfaces em um subsistema. Esse padrão define uma interface de alto nível que facilita o uso do subsistema.
Exemplo de uso: considere um sistema complexo para gerenciar dispositivos multimídia em um carro, que inclui subsistemas para conectividade de áudio, vídeo e Bluetooth. Uma fachada pode oferecer uma interface simples para iniciar música, parar de vídeo ou gerenciar chamadas, ocultando a complexidade e as dependências entre os subsistemas.
Definição: O padrão de peso mosca é um padrão estrutural que usa o compartilhamento para suportar um grande número de objetos de granulação fina com eficiência. É particularmente útil quando uma grande parte do estado de um objeto pode ser compartilhada e feita externa a ele.
Exemplo de uso: imagine ter um aplicativo para gerenciar tipos de livros. Ele usa uma fábrica para criar e compartilhar instâncias de tipos de livros. Dessa forma, se o mesmo tipo de livro for solicitado várias vezes, o mesmo objeto será retornado em vez de criar um novo a cada vez. Isso salva a memória e melhora o desempenho geral do aplicativo.
Definição: O padrão de proxy fornece um substituto ou espaço reservado para outro objeto para controlar o acesso a ele. Esse padrão é usado quando você deseja impor restrições ao acesso a um objeto, carregamento preguiçoso ou para fornecer localização transparente de um objeto em um ambiente distribuído.
Exemplo de uso: no controle de acesso a um sistema de arquivos, um proxy pode ser usado para controlar as operações do usuário nos arquivos. O proxy verifica as credenciais de um usuário antes de permitir o acesso real ao arquivo, fornecendo segurança adicional.
Definição: O padrão Singleton é um padrão criativo que garante que uma classe tenha apenas uma instância, fornecendo um ponto de acesso global a essa instância.
Exemplo de uso: em um aplicativo, o padrão Singleton pode ser usado para gerenciar a configuração do aplicativo. Um objeto Singleton pode conter todas as configurações que permanecem constantes durante a execução do aplicativo e podem ser lidas em várias partes do programa.