Mind map
Padrões de Projetos

Mapa mental: Padrões de projetos
Map content
Padrões de Projetos
Definição
- Design Patterns são soluções reutilizáveis para problemas comuns encontrados durante o desenvolvimento de software. Eles oferecem uma abordagem para projetar sistemas flexíveis e robustos, promovendo a modularidade, a reusabilidade e a manutenibilidade do código. Existem três tipos principais de design patterns:
Vantagens
- Aprender Padrões de Projeto pode trazer benefícios significativos. Eles podem economizar tempo de trabalho, pois você reaproveita um caminho que já foi deixado anteriormente para ser seguido por outras pessoas desenvolvedoras1. Além disso, eles podem melhorar a legibilidade e a manutenibilidade do seu código23.
- Eles fornecem soluções testadas e comprovadas para problemas comuns no design de software. Eles podem acelerar o processo de desenvolvimento. Eles podem melhorar a legibilidade e a manutenibilidade do código. Eles fornecem uma linguagem comum para os programadores.
Tipos de Padrões de Projetos
- Criacionais: Esses padrões lidam com mecanismos de criação de objetos, tentando criar objetos de maneira adequada à situação. Estes padrões lidam com o processo de criação de objetos, tentando criar objetos de maneira adequada às necessidades da situação. Eles promovem a flexibilidade no processo de criação de objetos.
- Factory Method
- Definição
- Permite a criação de objetos sem especificar a classe exata do objeto a ser criado.
- Detalhe de implementação
- Existe uma classe Factory com um método que que recebe os parâmetros para criação do objeto. e dependendo do tipo o objeto ṕe cirado (existe um if no método)
- Vantagens/Desvantagens
- Vantagens: Flexibilidade na criação de objetos, permitindo mudanças na criação sem afetar o código cliente. Encapsulamento da lógica de criação em uma classe separada. Desvantagens: Pode levar à complexidade adicional se muitos métodos de fábrica forem necessários para diferentes tipos de objetos.
- Definição
- Abstract Factory
- Definição
- Fornece uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas.
- Detalhes de IMplementação
- Existe uma classe abstrata Factory que define os métodos. Existe várias classes Factorys concretas que estendem a abstrata que implementam a criação de diferentes objetos.
- Vantagens/Desvantagens
- Vantagens: Isola o código cliente da maneira como os objetos são criados, permitindo fácil substituição de famílias de objetos. Promove a consistência na criação de objetos relacionados. Desvantagens: Adicionar novos produtos ou famílias de produtos pode exigir alterações significativas na interface da fábrica.
- Definição
- Builder
- Definição
- Separa a construção de um objeto complexo de sua representação, permitindo a mesma construção para criar diferentes representações. Sugerido usar quando há classes com muitos construtores ou com muitas subclasses.
- Detalhes de IMplementação
- Existe uma classe Director, que define a ordem na qual executar as etapas de construção, enquanto que o builder provê a implementação dessas etapas. Ter uma classe diretor em seu programa não é estritamente necessário. Você sempre pode chamar as etapas de construção em uma ordem específica diretamente do código cliente. Contudo, a classe diretor pode ser um bom lugar para colocar várias rotinas de construção para que você possa reutilizá-las em qualquer lugar do seu programa. Cria-se a classe Director, a classe abstrata Builder e as classes concretas Builder1, BBuilder2, etc. O construtor recebe o builder (abstract) e chama os métodos para construção do objeto.
- Vantagens Desvantagens
- Vantagens: Separa a construção de objetos complexos da sua representação, facilitando a criação de diferentes representações. Permite a construção passo a passo de objetos. Desvantagens: Pode resultar em um número significativo de classes se houver muitos tipos de objetos complexos.
- Definição
- Prototype
- Definição
- Cria novos objetos duplicando um objeto existente, evitando assim a sobrecarga de criação de instâncias. Necessário quando precisar criar copias de objetos.
- Detalhes de Implementação
- Criar uma interface (ou classe abstrata) com o método clone. Uma classe protótipo deve definir um construtir alternativo que recebe um objeto da sua classe. O método clone implementado nas classes concretas consiste em uma linha criando um objeto com o construtor passando como referencia o proprio objeto, que irá realizar a cópia.
- Vantagens/Desvantagens
- Vantagens: Reduz a necessidade de criar subclasses para cada configuração de objeto. Facilita a adição de novos tipos de objetos sem alterar a estrutura existente. Desvantagens: Pode ser difícil de implementar em linguagens que não oferecem suporte nativo à clonagem de objetos.
- Definição
- Singleton
- Definição
- Garante que uma classe tenha apenas uma instância e fornece um ponto de acesso global para essa instância.
- Detalhes de implementação
- Definir o construtor como private e criar um método estático que retorna o objeto. Dentro do método estático ele verifica se o objeto já foi instancia e o instancia, se necessário.
- Vantagens Desvantagens
- Vantagens: Garante que uma classe tenha apenas uma instância, útil para recursos compartilhados. Fácil acesso global a essa instância. Desvantagens: Pode introduzir acoplamento forte entre classes que usam o singleton. Pode tornar a depuração e o teste mais difíceis devido ao acoplamento.
- Definição
- Factory Method
- Estruturais: sses padrões lidam com a composição de classes ou objetos. Eles ajudam a garantir que quando uma parte do sistema muda, todo o sistema não precisa ser alterado.
- Adapter
- Definição
- Permite que objetos com interfaces incompatíveis trabalhem juntos.
- Detalhes de implementação
- Cria-se uma classe "Adapter" que Estende da interface/classe adaptada e implementa os método necessário. Essa classe recebe no construtor a classe que precisa ser adaptada a classe estendida. Os métodos da classe estendida são implementados a partir dos métodos do objeto recebido no construtor.
- Vantagens desvantagens
- Vantagens: Permite que objetos com interfaces incompatíveis trabalhem juntos. Facilita a reutilização de classes existentes com interfaces diferentes. Desvantagens: Pode levar a um código mais complexo se houver muitas adaptações.
- Definição
- Bridge
- Definição
- Separa uma abstração da sua implementação, permitindo que elas variem independentemente. Bridge é um padrão de projeto estrutural que permite que você divida uma classe grande ou um conjunto de classes intimamente ligadas em duas hierarquias separadas—abstração e implementação—que podem ser desenvolvidas independentemente umas das outras.
- Detalhes de Implementação
- O padrão Bridge tenta resolver esse problema ao trocar de herança para composição do objeto. Isso significa que você extrai uma das dimensões em uma hierarquia de classe separada, para que as classes originais referenciem um objeto da nova hierarquia, ao invés de ter todos os seus estados e comportamentos dentro de uma classe.
- Vantagens e desvantagens
- Vantagens: Permite que a abstração e a implementação variem independentemente. Promove o desacoplamento entre abstração e implementação. Desvantagens: Pode aumentar a complexidade do código, especialmente para sistemas pequenos e simples.
- Definição
- Composite
- Definição
- Composição de objetos em uma estrutura de árvore para representar hierarquias parte-todo. Faz sentido apenas quando o modelo central de sua aplicação pode ser representada como uma árvore. Ex. imagine que você tem dois tipos de objetos: Produtos e Caixas. Uma Caixa pode conter diversos Produtos bem como um número de Caixas menores. Essas Caixas menores também podem ter alguns Produtos ou até mesmo Caixas menores que elas, e assim em diante.
- Detalhes de implementação
- Criar uma interface (ou classe abstrata) com os métodos dos objetos. Criase as subclasses concretas uma uma subclasse que terá um array de objetos dessa classe abstrata e que implementará os métodos da classe abstrata. A implementação dos métodos abstratos nessa classe agrupadora será um for chamando o método dos objetos dentro do array.
- Vantagens Desvantagens
- Vantagens: Facilita a manipulação de estruturas de árvores de objetos. Promove a uniformidade entre objetos simples e compostos. Desvantagens: Pode ser difícil suportar operações diferentes para objetos simples e compostos.
- Definição
- Decorator
- Definição
- Adiciona funcionalidades adicionais a um objeto dinamicamente. O Decorator é um padrão de projeto estrutural que permite que você acople novos comportamentos para objetos ao colocá-los dentro de invólucros de objetos que contém os comportamentos. por exemplo quando Herança não é concebível por ser um caso que geraria um número muito alto de sub-classes.
- Detalhes de Implementação
- Cria-se a classe Abstrata Base e uma classe Base Concreta que estende a base. Então cria-se um decorador, que estende a classe abstrata e possui um atributo da classe Base estendida e a implementação do método que é a chamada do método desse atributo.. As classes que precisam ser decoradas, estendem da classe Decoradora que implementam o método da classe base abstrata.
- Vantagens desvantagens
- Vantagens: Adiciona responsabilidades a objetos de forma dinâmica. Evita a necessidade de subclasses para cada combinação de comportamentos. Desvantagens: Pode levar a muitos objetos pequenos e específicos.
- Definição
- Facade
- Definição
- Fornece uma interface unificada para um conjunto de interfaces em um subsistema. O Facade é um padrão de projeto estrutural que fornece uma interface simplificada para uma biblioteca, um framework, ou qualquer conjunto complexo de classes.
- etalhes de Implementação
- Implementar uma classe para simplificar e unificar uma interface grande ou um conjunto complexo de interfaces
- Vantagens e desvantagens
- Vantagens: Fornece uma interface simplificada para um subsistema complexo. Promove o desacoplamento entre o cliente e os componentes do subsistema. Desvantagens: Pode ocultar detalhes importantes do subsistema, levando a problemas de manutenção.
- Definição
- Proxy
- Definição
- Fornece um substituto ou marcador de posição para outro objeto para controlar o acesso a ele.
- DEtalhes Implementação
- Cria-se uma classe Proxu que extende a classe target e implementa os métodos. Caso haja alguma restrição nos acessos aos métodos isso é barrado no método.
- Vantagens desvantagens
- Vantagens: Controla o acesso a objetos, permitindo operações adicionais, como verificação de acesso e criação sob demanda. Reduz a complexidade do cliente, fornecendo um substituto para um objeto remoto ou custoso de criar. Desvantagens: Pode introduzir uma camada adicional de indireção, afetando o desempenho.
- Definição
- Adapter
- Comportamentais: Esses padrões são usados em comunicações entre objetos, como eles estão comunicando uns com os outros e como os fluxos de controle são divididos entre eles.
- Chain of Responsibility
- O padrão permite que vários objetos tratem a solicitação sem acoplar a classe remetente às classes concretas dos destinatários. A cadeia pode ser composta dinamicamente em tempo de execução com qualquer handler que siga uma interface de handler padrão. permite que você repasse chamadas de métodos através de uma corrente de objetos que podem tratar essa chamada. Ao receber um pedido, cada objeto da cadeia deve decidir se processa o pedido ou se passa adiante para o próximo objeto na corrente.
- Implementa;áo: Cria-se uma interface com o método handle e o nextHandler.. As classes concretas que estenderem esse handler deveráo implementar o m[etodo e decidir se aplicarao o pr[oximo handler. Exemplo é uma cadeia sequencial de descontos.
- Command
- O padrão Command nos diz como criar “objetos de comando” que encapsula uma solicitação para fazer algo em um objeto específico. Basicamente todos os objetos de Comando implementam a mesma interface, que consiste em um único método normalmente chamado de execute(). Segue abaixo um exemplo desta implementação.
- Implementa;áo Criar uma interface chamada Command que define o método execute(); Criar a classe Receiver que implementa os comportamentos reais; Criar a classe que implementa Command e encapsula os métodos de Receiver no método execute(); Criar a classe Invoker, que possui um elemento Command e métodos que invocam execute(); Criar a classe Client que trabalha com as opções de Invoker;
- Interpreter
- O padrão de design do Interpreter avalia/interpreta as instruções escritas em uma gramática ou notações de idiomas. Esse padrão envolve a implementação de uma interface de expressão que informa para interpretar um contexto específico. Esse padrão é usado nos compiladores ou analisadores ou expansões de macro.
- Iterator
- O Projeto Padrão Iterator visa encapsular uma iteração. O padrão Iterator depende de uma interface chamada Iterator, com dois m[etodos? O método hasNext () determina se há mais elementos a serem iterados. O método next retorna o próximo objeto na iteração.
- Depois disso, já temos a interface que pode implementar iterações para qualquer coleção de objetos: matrizes, listas, tabelas de hash, etc. Para cada conjunto de objetos que você deseja encapsular a iteração cria uma implementação para a interface Iterator definido acima. Por exemplo, para encapsular uma iteração de um menu teria a classe abaixo:
- Mediator
- O Mediator é um padrão de projeto comportamental que permite que você reduza as dependências caóticas entre objetos. O padrão restringe comunicações diretas entre objetos e os força a colaborar apenas através do objeto mediador. O padrão Mediator promove um baixo acoplamento evitando que os objetos façam referência uns aos outros de forma explícita permitindo a você variar usa interação de forma independente.[GoF]
- Criar uma interface Mediator com o método send. A classe Mediator Concreta conhecer todos os componentes que seráo mediados e no método send, recebe o componente, verifica qual é o tipo de define a notifica;áo. C classe component Abstract tem o m[etodo send que envia notifica;áo ao mediator e o notify para receber notifica;óes.
- Memento
- permite capturar e armazenar e restaurar o estado interno de um objeto sem violar o encapsulamento (sem revelar detalhes de implementacao)
- POssui o Originador (Cria um memento contendo um instantâneo de seu estado interno atual.), Memento (Armazena o estado de um objeto Originador.) e o CareTaker (É responsável pela segurança do memento. ◦ Nunca executa ou examina o conteúdo de um memento.)
- Observer
- – Definir uma dependência um para muitos entre objetos, de forma que quando um objeto muda de estado, todos os seus dependentes são notificados e atualizados. permite que um objeto notifique outros objetos sobre alterações em seu estado
- Possui a interface Observador e o Subject (que ser[a notificado). A classe Subject implementa um método update da interface Observer, que atualiza os dados. O Observador possui um arrayList com os observados.
- State
- O padrão state permite que um objeto altere o seu comportamento quando o seu estado interno muda. O objeto parecerá ter mudado de classe.
- Possui uma interface Estado, com os métodos da classe e recebe no construtor a classe de contexto. Cada EstadoConcreto implementa os métodos da Classe Estado. A classe Contexto instancia os estados concretos e possui o estado corrente, tambem implementa os métodos que altera os estados, mas faz a chamada a partir do objeto de contexto atual. Os estados podem mudar o estado atual de a partir da classe do contexto (m[etodo setState).
- Strategy
- projeto comportamental que permite que você defina uma família de algoritmos, coloque-os em classes separadas, e faça os objetos deles intercambiáveis.
- Tem uma interface strategy, e as classes strategy concretas com a implementacao dos diferentes algoritmos. A classe "contexto" possui uma instancia da interface e chama o método implementado que retornará o resultado do algoritmo específico. Exemplo de uso no java com enum.
- Template Method
- padrão de projeto comportamental que permite definir o esqueleto de um algoritmo em uma classe base e permitir que as subclasses substituam as etapas sem alterar a estrutura geral do algoritmo.
- Possui uma classe abstrata que define os métodos. e as classes concretas que implementam os métodos.
- Chain of Responsibility
- Criacionais: Esses padrões lidam com mecanismos de criação de objetos, tentando criar objetos de maneira adequada à situação. Estes padrões lidam com o processo de criação de objetos, tentando criar objetos de maneira adequada às necessidades da situação. Eles promovem a flexibilidade no processo de criação de objetos.
Desvantagem
- Eles podem diminuir a compreensibilidade adicionando indireção ou aumentando a quantidade de código.
Padrões de classe
- Factory Method; Adapter; Template Method; Interpreter.
Padrões de objetos
- Template Method; Mediator; Iterator; Visitor; Memento; Interpreter; Strategy; Command; Chair of Responsability; Observer; State
Information
- Description
- Profissionalizante Engenharia de Software (Design patterns) Mind Map on Padrões de Projetos, created by Andrei Inacio on 04/03/2024.
- Created by
- Andrei Inacio
- Views
- 0
- Rating