ESW 02 Flashcards
Padrões de Projeto. Defina Factory Method.
Define uma interface para criar um objeto, mas deixa as subclasses decidirem qual classe instanciar.
Pessoa (Abstrata), Homem e Mulher (Concretas) – produtos (abstrato e concreto)
Factory decide qual classe concreta instanciar – criador (abstrato e concreto)
Padrões de Projeto. Defina Abstract Factory.
Proporciona uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas.
Fábricas abstratas com produtos abstratos (GUIFactory com Button).
Fábricas concretas com produtos concretos (WinFactory/OSXFactory com WinButton/OSXButton).
Tudo com implementação (abstratas são interfaces).
Padrões de Projeto. Defina Builder.
Separa a construção de um objeto complexo da sua representação, de forma que o mesmo processo possa criar diferentes tipos de representações.
Classe construtora abstrata (PizzaBuilder) com métodos abstratos para construir partes específicas da pizza (tempero, cobertura).
Classe construtora concreta para construir cada tipo de pizza (BuildPizzaMarguerita).
Classe diretora que coordena a ordem de construção das partes (Cozinhar)
Padrões de Projeto. Defina Composite.
Compõe zero ou mais objetos similares de forma que eles possam ser manipulados como um só.
Representar hierarquias parte-todo de objetos. Manipula objeto composto igual a objeto único.
“A implementação de montadores de árvores sintáticas apoia-se mais no uso do padrão Composite”.
Padrões de Projeto. Defina Decorator.
Anexa responsabilidades adicionais a um objeto dinamicamente.
Decoradores fornecem uma alternativa flexível em relação a herança para estender funcionalidades.
Método original combina o comportamento base mais o comportamento “decorado”.
Padrões de Projeto. Defina Flyweight.
Usa compartilhamento para suportar grandes quantidades de objetos, de granularidade fina, de maneira eficiente. Aplicação utiliza um grande número de objetos e o custo para armazená-los é muito alto.
Padrões de Projeto. Defina Strategy.
Define uma família de algoritmos, encapsula cada um, e faz deles intercambiáveis. Várias classes relacionadas diferem apenas em seus comportamentos. Diferentes variantes de um algoritmo.
Padrões de Projeto. Defina Memento.
Sem violar o encapsulamento, captura e externaliza o estado interno de um objeto, de forma que ele possa ser recuperado depois.
Uma “fotografia” (parte) do objeto precisa ser salva, de forma que ela possa ser recuperada depois.
Memento salva estado de Originator.
Padrões de Projeto. Defina Interpreter.
Dada uma linguagem, define uma representação para sua gramática juntamente com um interpretador para as sentenças dessa linguagem.
Sabemos como reproduzir uma nota em determinada frequência, e sabemos as frequências das notas. Mas como mapeamos uma Nota para uma determinada Frequência? Precisamos de um Interpreter.
Padrões de Projeto. Defina Mediator.
Define um objeto que encapsula a forma como um conjunto de objetos interage
O reúso de um objeto é difícil, porque ele referencia e se comunica com muitos outros objetos – o conjunto de objetos se comunica de maneira bem-definida, porém complexas.
Mediator/ConcreteMediator e Colleague/ConcreteColleague. Exemplo: Chat.
Internamente aos colegas, o mediador que está cuidando da comunicação.
Padrões de Projeto. Defina Command.
Encapsula uma requisição como um objeto, deixando-o, dessa forma, parametrizar os clientes com diferentes requisições.
Cria Commands que aceitam no construtor o cliente e as requisições são de commands concretos.
Parametrizar objetos para realizar alguma ação. Suportar undo. Suportar transações.
Invoker (controla comandos), Receiver (manipulado pelos comandos), Command e CommandConcreto.
O uso disseminado de Commands facilita a estruturação de um sistema em operações de alto nível.
Padrões de Projeto. Qual o padrão descrito em: “Incorporar a um software um conjunto de algoritmos de uma mesma família, os quais são aplicáveis de forma intercambiável a um agregado de objetos similares, no qual o conjunto é passível de expansão em tempo de manutenção do software”?
Padrão Comportamental Strategy.
Define uma família de algoritmos, encapsula cada um, e faz deles intercambiáveis. Várias classes relacionadas diferem apenas em seus comportamentos. Diferentes variantes de um algoritmo.