Flashcards
Padrões de Projeto
Flashcards do conjunto (55)
- 1Padrões de ProjetoObjetivo: registrar uma experiência no projeto de software, na forma de um padrão passível de ser efetivamente utilizado por projetistas
- 2Padrões de ProjetoCaracterísticas: busca de baixo acoplamento e alta coesão
- 3Padrões de ProjetoPropósitos:
i. Criativo;
ii: Estrutural;
iii. Comportamental. - 4Padrão CriativoAbstrai o processo de instanciação (criação) de objetos, ajudando a tornar um sistema independente de como seus objetos são criados, compostos e representados
- 5Padrão EstruturalDiz respeito a como classes e objetos são compostos para formar estruturas maiores
- 6Padrão ComportamentalDiz respeito a algoritmos e a atribuição de responsabilidades e comportamentos entre objetos
- 7Método FábricaPropósito: definir uma interface para criar um objeto, mas deixar as subclasses decidirem que classe instanciar. O método fábrica permite adiar a instanciação para as subclasses
- 8Método FábricaEstrutura:
- ConcreteCreator
- ConcreteProduct
- Creator
- Product - 9Método FábricaPontos positivos:
- Baixo acoplamento
- Maior flexibilidade
- Elimina a necessidade de acoplar classes específicas para aplicação em nível de cargo - 10Método FábricaPontos negativos:
- Alto número de classes - 11Fábrica AbstrataPropósito: destinada à criação de uma família de objetos relacionados. Dessa forma, se todos os objetos relacionados forem obtidos a partir da mesma fábrica, não haverá inconsistência entre eles
- 12Fábrica AbstrataEstrutura:
- AbstractFactory
- ConcreteFactory
- AbstractProduct
- ConcreteProduct
- Client - 13Fábrica AbstrataPontos positivos:
- Isola as classes concretas
- Torna fácil a troca de famílias
- Promove a harmonia entre produtos - 14Fábrica AbstrataPontos negativos:
- Difícil de suportar novos tipos de produto - 15BuilderPropósito: permite criar diversos objetos semelhantes, utilizando o mesmo algoritmo
- 16BuilderEstrutura:
- Builder
- ConcreteBuilder
- Director
- Product - 17BuilderPontos positivos
- Permite variar a representação interna de um produto
- Isola um código para construção e representação
- Oferece um controle mais fino sobre o processo de construção - 18BuilderPontos negativos
- É preciso sempre chamar o método de construção para depois utilizar o produto em si - 19SingletonPropósito: garante que apenas um objeto será criado e prover um único ponto de acesso para a esse objeto
- 20ProtótipoPropósito: especifica os tipos de objetos que serão criados através de protótipos e cria um novo objetivo copiando um protótipo
- 21ProtótipoEstrutura
- Prototype
- ConcretePrototype
- Cliente - 22ProtótipoPontos positivos
- Acrescenta e remove produtos em produção
- Especifica novos objetos pela variação de valores e estrutura
- Reduz o número de subclasses
- Configura dinamicamente uma aplicação com classes - 23ProtótipoPontos negativos
- Cada subclasse do Protótipo deve implementar a operação Clone, o que pode ser difícil - 24AdaptadorPropósito: converte uma interface de um terceiro em uma interface que o programa entende
- 25AdaptadorEstrutura
- Target
- Cliente
- Adapteer
- Adapter - 26AdaptadorPontos positivos
- Permite a Adapter substituir algum comportamento da Adapteer
- Introduz somente um objeto
- Um único Adapter trabalhar com vários Adapteers - 27AdaptadorPontos negativos
- Um adaptador de objetos torna mais difícil redefinir um comportamento de Adaptee - 28Peso MoscaPropósito: usar o compartilhamento para suportar de forma eficiente grandes quantidades de objetos
- 29Peso MoscaEstrutura
- Flyweight
- ConcreteFlyweight
- UnsharedConcreteFlyweight
- FlyweightFactory
Cliente - 30Peso MoscaPontos positivos
- Um grande número de objetos podem ser substituídos por um grupo relativamente pequeno de objetos compartilhados - 31Peso MoscaPontos negativos
- Pode haver um grande custo na procura dos objetos compartilhados - 32ObservadorPropósito: define uma relação de notificação de um para muitos, ou seja, quando um objeto muda seu estado, outros objetos são notificados de forma automática
- 33ObservadorEstrutura
- Subject
- Observer
- ConcreteSubject
- ConcreteObserver - 34ObservadorPontos positivos
- Acoplamento abstrato entre subject e observer
- Suporte para comunidade do tipo broadcast - 35ObservadorPontos negativos
- Atualizações inesperadas
- O protocolo simples de atualização não fornece detalhes sobre o que mudou no subject - 36CompositePropósito: tem o objetivo de permitir que a mesma abstração possa ser utilizada para uma instância simples e para seu conjunto
- 37CompositeEstrutura
- Component
- Leaf
- Composite
- Client - 38CompositePontos positivos
- Define hierarquias de classe que consistem de objetos primitivos e compostos
- Torna o cliente mais simples
- Torna mais fácil de acrescentar novas espécies de componentes - 39CompositePontos negativos
- Pode tornar o projeto excessivamente genérico - 40Cadeia de ResponsabilidadePropósito: evitar a acoplamento do sender de uma requisição com os receiver que irá tratar a requisição. A cadeia de receiver irá passar a requisição até um objeto tratar a requisição
- 41Cadeia de ResponsabilidadeEstrutura
- Handler
- ConcreteHandler
- Client - 42Cadeia de ResponsabilidadePontos positivos
- Acoplamento reduzido
- Flexibilidade adicional na atribuição de responsabilidades a objetos - 43Cadeia de ResponsabilidadePontos negativos
- A recepção não é garantida - 44Template MethodPropósito: define o “esqueleto” de um algoritmo em um método, utilizando as subclasses como etapas para o algoritmo. Define alguns métodos e deixa alguns para a classe concreta implementar.
- 45Template MethodEstrutura
- AbstractClass
- ConcreteClass - 46Template MethodPontos positivos
- Facilidade de alteração do algoritmo principal
- Técnica fundamental para reutilização de código
- Particularmente importantes em bibliotecas de classe - 47Template MethodPontos negativos
- Se for preciso definir muitas operações nas subclasses, talvez seja necessário refatorar o código ou repensar o design
- Não é possível proteger o método que executa o algoritmo genérico das subclasses - 48EstratégiaPropósito: permite que o cliente mude o algoritmo de um objeto que utiliza uma função
- 49EstratégiaEstrutura
- Strategy
- ConcreteStrategy
- Context - 50EstratégiaPontos positivos
- Podem fornecer diversas implementações do mesmo comportamento
- Eliminam comandos condicionais da linguagem de programação - 51EstratégiaPontos negativos
- Clientes devem conhecer diferentes Strategies
- A interface de Strategy é compartilhada por todas as classes - 52ComandoPropósito: encapsula uma requisição como um objeto, deixando que o cliente parametrize as requisições. Facilita a adição de novos comandos e permite guardar um histórico de execução
- 53ComandoEstrutura
- Command
- ConcreteCommand
- Client
- Invoker
- Receiver - 54ComandoPontos positivos
- É possível montar comandos para formar um comando composto
- Fácil acrescentar novos Commands
- Facilidade de extensão na arquitetura
- Bom nível de desacoplamento - 55ComandoPontos negativos
- Complexidade dos comandos crescer demais
Informações
- Descrição
- FlashCards sobre Padrões de Projeto, criado por Anne Caroli em 25-06-2019.
- Criado por
- Anne Caroli
- Visualizações
- 0
- Avaliação