You are on page 1of 13

Abstract Factory Builder Factory Method Prototype Singleton Adapter Bridge Composite Decorator Facade Flyweight Proxy

Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template Method Visitor

Padrões de Criação Padrões Estruturais Padrões de Comportamento
Padrões de Projeto da GoF

Padrões de projeto do POSA Categoriza os padrões em 3 categorias ✔ Padrões Arquiteturais ✔ Padrões de Projeto ✔ Idiomas Padrões Arquiteturais

Expressam um esquema de organização estrutural para sistemas de software Oferecem um conjunto de subsistemas pré-definidos. Exemplos • • • • MVC Broker Layer Reflection Padrões de Projeto Oferece um esquema para refinar os subsistemas ou componentes de um sistema de software ou as relações entre eles. especifica suas respectivas responsabilidades e inclui regras e diretrizes para organizar as relações entre eles. São considerados padrões de média escala Exemplos • • • • • Singleton Observer Adapter Command Strategy Idiomas Padrão de baixo nível específico de uma linguagem de programação Mostra como se pode implementar um dado componente/classe ou interação entre componentes/classes usando os recursos de uma LP Exemplos • • Singleton em C++ ou em Java Counted Pointer: gerência de memória em C++ .

◦ The doFilter method will modify the request or response and then call the next filter in the filter chain. data compression . ◦ Examples of filter use . Image conversion .A maioria das aplicações web tem algumas funcionalidades (por exemplo. Para resolver esse problema pode ser utilizado o design pattern Intercepting Filter.Filter interface ◦ Container will call the doFilter() method. ◦ Introduced in Servlet specification 2. Propósito do Intercepting Filter: • • Executar pré e pós processamentos de algum processamento Design pattern da J2EE Aplicabilidade • • O processamento desejado pode ter uma cadeia de processamentos ligados Pré e pós processamentos Ex: Traduções Intercepting Filter • Create Pluggable filters to process common services in a standard manner . . encryption … • How to write a filter ? ◦ Implement the javax. logging & auditing . Para adicionar essa funcionalidade separadamente para cada requisição da aplicação seria demorado.authentication filters . que são aplicáveis a todas as requisições da aplicação. rather they are used to modify the request or the response .servlet. ◦ Related to the decorator ( GOF ) pattern ◦ Front controller provides similar functionality . ◦ Filters do not generally create a response or respond to a request as servlets do . segurança). without requiring changes to the core request . propenso a erros e difícil de manter. but is better suited to handling core processing.3 ◦ Filters allow on the fly transformations of payload and header of both the request into a resource and the response from a resource.

. especifica que são usados ajudantes para adaptar os dados do modelo para a camada de apresentação da aplicação. Garantir a existência de apenas uma instância de uma classe. Trata-se de View Helper. No contexto dos padrões de projeto: I. II. respectivamente. Possibilitar o armazenamento do estado interno de um objeto em um determinado momento. II. caso necessário. Singleton e Memento. O catálogo de padrões de projeto (design patterns) do GoF contém 23 padrões e está. Possibilitar o adiamento da instanciação para as subclasses. II e III são. Desacoplar uma abstração de sua implementação para que ambas possam variar independentemente. Structural e Behavioral. para que seja possível retorná-lo a este estado. São exemplos típicos dessa família: Chain of Responsability. Considere: I. objetivos dos design patterns intitulados: Factory Method. I.Padrão que encapsula a lógica de apresentação de dados de negócios dinâmicos ou. sem especificar suas classes concretas. os padrões de projetos comportamentais tratam das interações e divisões de responsabilidades entre as classes ou objetos. Fornecer uma interface para criação de famílias de objetos relacionados ou dependentes. III. ainda. Oferecer uma interface simples para uma coleção de classes. Correspondem respectivamente a Façade e Bridge Na engenharia de software. dividido em três seções: Creational. basicamente. Interpreter e Iterator. mantendo um ponto global de acesso ao seu objeto.

II. de tal forma que diversas representações podem ser criadas em razão da necessidade do programa. Os design patterns são bastante abstratos e os frameworks menos abstratos.Os design patterns: podem ser modelados utilizando-se a linguagem UML que fornece um meio eficiente de modelar padrões de projeto representando-os como colaborações. são expressivos: formam um vocabulário comum para expressar grandes . é correto afirmar: O padrão é uma descrição de conhecimento e experiência acumulados. II. são reutilizáveis: fornecem uma solução pronta que só não pode ser adaptada para diferentes problemas. Sobre design pattern considere: I. uma solução comprovada para um problema comum. III. Sobre os design patterns. Os padrões de projeto (design patterns) I. No design pattern pode incluir código de programação e conter vários frameworks. III. Está correto o que consta em I e III __________________ Questão TRT Creational Pattern Java que tem por objetivo separar a construção de um objeto complexo da sua representação. Trata-se de Builder Pattern. foram testados: refletem a experiência e conhecimento dos desenvolvedores que utilizaram estes padrões com sucesso em seu trabalho. No framework pode incluir código de programação e conter vários design patterns.

é característica do padrão de projeto arquitetural Model-View-Controller Acerca desses padrões. IV. --> Controller _______________ Analise: I. --> Adapter III. menor será o retrabalho em etapas mais avançadas do projeto. Está INCORRETO o que consta APENAS em II Em relação aos padrões de projetos orientados a objetos. algumas classes. Pertencente ao grupo de padrões estruturais. É o responsável pela especificação dos tipos de objetos a serem criados usando uma "instância" prototípica e pela criação de novos objetos copiando . sem saber de quantas nem quais interfaces com o usuário estão exibindo seu estado.soluções sucintamente. é utilizado para permitir que dois objetos se comuniquem mesmo que tenham interfaces incompatíveis. facilitam o aprendizado: reduzem o tempo de aprendizado de uma determinada biblioteca de classes. --> Singleton II. --> Command IV. V. ou façam o registro de log de requisições e dêem suporte a operações que podem ser desfeitas. permitindo que os clientes parametrizem diferentes requisições e filas. tais como um spooler de impressão ou um sistema de arquivos. separar dados ou lógica de negócios da interface do usuário e do fluxo da aplicação para permitir que uma mesma lógica de negócios possa ser acessada e visualizada através de várias interfaces. diminuem retrabalho: quanto mais cedo são usados. avalie: I. Em termos de padrões de criação de projetos. devem ser instanciadas uma única vez e prover um ponto de acesso global a esta instância. Encapsula uma requisição como um objeto. Atribuir a responsabilidade do tratamento de um evento do sistema a uma classe que representa o próprio sistema ou à classe que representa um caso de uso.

sem expor a representação interna desse agregado. --> Façade III. sem especificar suas classes concretas.este protótipo. A solução proposta é a seguinte: . Integrante do grupo de padrões comportamentais. As consequências do uso deste padrão é que o encapsulamento é mantido. compõe o grupo de padrões estruturais. --> Expert As associações entre classes e objetos são tratadas pelos Padrões de Projeto de Software (Design Patterns) da família de Padrões GoF Estruturais Um padrão de projeto de software (design pattern) que fornece uma interface para criação de famílias de objetos relacionados ou dependentes. --> Iterator IV. Permite a instanciação de objetos em tempo de execução. denomina-se factory method Considere: I. já que objetos usam sua própria informação para cumprir responsabilidades . --> Factory II. Inicialmente será necessário fornecer suporte a bancos de dados XML e SQL. --> Singleton ___________________ Deseja-se que uma aplicação possa manipular diferentes tipos de bancos de dados de modo transparente às classes que necessitam de serviços de acesso a dados. Define uma interface de nível mais alto que torna o subsistema mais fácil de usar e fornece uma interface única para um subsistema com diversas interfaces. uma vez que objetos fazem tudo que é relacionado à sua própria informação. entretanto novos tipos poderão ser futuramente adicionados. --> Prototype II. Define objetos para possibilitar iterações em uma lista de itens. ele provê uma forma de acessar sequencialmente os elementos de um agregado de objetos . Define situação onde é necessário haver somente uma instância de classe. leva ao fraco acoplamento entre objetos e à alta coesão. --> foreach III.

Isso será feito através do método estático getDB(). O objeto criado no passo anterior irá instanciar conexões e consultas correspondentes ao tipo de DB criado. O diagrama de classe a seguir ilustra a estrutura descrita acima. isto é. de acordo com o parâmetro (tipo) passado. apenas consultas SQL e conexões SQL serão instanciadas. apenas consultas XML e conexões XML serão instanciadas. caso um DB SQL tenha sido instanciado. que irá retornar um objeto de uma de suas subclasses concretas. caso um DB XML tenha sido instanciado. 2. Uma classe abstrata (DB) será responsável por instanciar um objeto correspondente ao tipo de banco de dados desejado. Qual padrão de projeto foi utilizado na solução proposta? .1.

O padrão composite é normalmente utilizado para representar listas recorrentes . estão num nível de generalidade mais alto. Abstract Factory: permite a criação de famílias de objetos relacionados ou dependentes. tal como Motif. que pode ser usada em muitas situações diferentes. utilizado na implementação de um toolkit que disponibilize controles que funcionem em diferentes interfaces gráficas. Além disso. com um mecanismo especial para inserção de novos receptores no final da cadeia existente. GTK+ (GNOME) ou Qt (KDE). de forma que o mesmo processo de construção possa criar diferentes representações. ou seja. A delegação das solicitações pode formar uma árvore de recursão. sem especificar os detalhes das classes ou objetos envolvidos.de elementos. Cada objeto receptor possui uma lógica descrevendo os tipos de solicitação que é capaz de processar e como passar adiante aquelas que requeiram processamento por outros receptores. Composite: Aqui. esta forma de representar elementos compostos em uma hierarquia de classes permite que os elementos contidos em um objeto composto sejam tratados como se fossem um único objeto. Não é um código final. é uma descrição ou modelo de como resolver o problema do qual trata. Esses objetos receptores passam a solicitação ao longo da cadeia até que um ou vários objetos a tratem. Desta forma.ou recursivas . Chain Of Responsibility: epresenta um encadeamento de objetos receptores para o processamento de uma série de solicitações diferentes.• • • • • a) Adapter b) Builder c) Composite d) Abstract Factory e) Chain of Responsibility Software Design Pattern descreve uma solução geral reutilizável para um problema recorrente no desenvolvimento de sistemas de software orientados a objetos. Builder: permite a separação da construção de um objeto complexo da sua representação. Os Padrões de Projeto normalmente definem as relações e interações entre as classes ou objetos. o objeto composto possui um conjunto de outros objetos que estão na mesma hierarquia de classes a que ele pertence. todos os métodos comuns às classes que representam objetos atômicos da hierarquia poderão ser aplicáveis também ao conjunto de objetos agrupados no objeto composto. . através de uma única interface e sem que a classe concreta seja especificada.

O padrão de projeto singleton é usado para restringir • • • • • a) a instanciação de uma classe para objetos simples. Orientada a requisitos. Comportamental. na superclasse dessa classe. O padrão de projeto Factory provê uma classe de decisão que retorna • • • • • a) um objeto de uma de suas subclasses. b) a instanciação de uma classe para apenas um objeto. com base em um parâmetro reservado. b) um atributo de uma de suas classes conexas. d) um atributo de uma de suas classes conexas. com parâmetros fatorados. Evolutiva. Contingencial. se não encontrado. Estrutural. c) a quantidade de classes d) as relações entre classes e objetos. Vinculada. sem fixação de parâmetros.Um exemplo da aplicação desse padrão é o mecanismo de herança nas linguagens orientadas a objeto: um método chamado em um objeto é buscado na classe que implementa o objeto e. d) Criacional. b) Criacional. Comportamental. c) Compartimental. c) um objeto de uma de suas subclasses. com base em um parâmetro recebido. de maneira recursiva. Os padrões de projeto (Design Patterns) são classificados nas categorias: • • • • • a) Situacional. Step-by-step. um desenvolvedor decidiu criar a facilidade de uma pessoa ter uma lista de amigos para . Podem ser classificados por propósito •Padrões de Criação: Abstraem o processo de criação de objetos a partir da instanciação de classes •Padrões Estruturais:Tratam da forma como classes e objetos estão organizados para formar estruturas maiores •Padrões Comportamentais: Preocupam-se com algoritmos e responsabilidades dos objetos Durante o desenvolvimento de um sistema para suporte a uma rede social. e) classes de atributos complexos. Estrutural. Complementar. e) um objeto de uma de suas subclasses. sem fixação de parâmetros. e) Criacional.

todas as funcionalidades de bancos de dados. ou pelo menos não faz parte do GoF) Façade: Classificado como estrutural e escopo objeto. Para facilitar a manutenção da aplicação. No entanto. Essa lista pode conter um número indefinido de amigos ou de outras listas de amigos. Esse design pattern é o DAO DAO (acrônimo de Data Access Object). tais como obter as conexões. postagens e/ou fotos. se assim o desejarem. Motivação: Estruturar um sistema em subsistemas contribui para reduzir sua complexidade. é um padrão para persistência de dados que permite separar regras de negócio das regras de acesso a banco de dados. Define uma interface de alto nível que faz um subsistema mais fácil de usar. normalmente. há um design pattern que tem como objetivo principal centralizar o acesso aos dados em uma única camada. criando uma estrutura recursiva. o qual provê uma interface única e uniforme para as diversas funcionalidades de um subsistema.poder enviar e-mails. Numa aplicação que utilize a arquitetura MVC. O padrão de projeto que descreve essa estrutura é • • • • • a) Abstract factory b) Chain of responsibility c) Composite d) Iterator e) Module Composite é. não evita que aplicações possam acessar diretamente as subclasses do sistema. utilizado para representar listas recorrentes ou recursivas de elementos Dá pra matar pelo final da questão "O padrão de projeto que descreve essaestrutura é". Abstract Factory (Criação) Chain of Responsability (Comportamental) Composite (Estrutural) Iterator (Comportamental) Module (não exite. Objetivo: Prover uma interface unificada para o conjunto de interfaces de um subsistema. devem ser feitas por classes de DAO. . A dependência entre subsistemas pode ser minimizada através do uso de um objeto Fachada. Consequências: Promove acoplamento fraco entre o subsistema e seus clientes. mapear objetos Java para tipos de dados SQL ou executar comandos SQL. Composite é o único estrutural.

d) Standard Patterns. b) Behavioral Patterns. Standard Patterns e Creational Patterns. Os padrões de projeto que tem a classificação pelo propósito são as seguintes: # Criação Abrange a configuração e inicialização de objetos e classes. descritos a seguir. O texto faz referência ao design pattern • a) Data Business Object. c) Creational Patterns.(Um exemplo seria o padrão de projeto Builder) # Estrutura Lida com as interfaces e a implementação das classes e dos objetos. . Structural Patterns e Standard Patterns. Essas famílias são denominadas. ligada ao entendimento do problema.(Um exemplo seria o padrão de projeto Observer no escuta um grupo de Objetos) Analise o texto: É um design pattern que permite que uma aplicação seja desenvolvida de forma que a camada de acesso aos dados seja isolada das camadas superiores. devem ser feitas por classes representadas nesse design pattern. Abrange a configuração e inicialização de objetos e classes.O desenvolvimento de software é uma atividade que apresenta dificuldades. tornando-se um mecanismo eficiente no compartilhamento de conhecimento entre os desenvolvedores. tais como estabelecimento de conexões. Lida com as interfaces e a implementação das classes e dos objetos. Gamma propõe um modo de categorização dos DESIGN PATTERNS. Numa aplicação que utiliza a arquitetura MVC. • • • • a) Structural Patterns. Design Patterns surgiram na busca de soluções para as dificuldades. Structural Patterns e Behavioral Patterns. Lida com as interações dinâmicas entre grupos de classes e objetos. Creational Patterns e Structural Patterns. II. III.(Um exemplo da uma interface que lida com a implementação dos objetos seria o padrão de projeto Facade) #comportamento: Lida com as interações dinâmicas entre grupos de classes e objetos. I. mapeamento de objetos Java para tipos de dados SQL ou execução de comandos SQL. definindo famílias de padrões relacionados. todas as funcionalidades de bancos de dados. respectivamente.

e) Data Transfer Object. c) Data Command Object. O DAO abstrai a implementação de acesso a base de dados para o Business Objectpara permitir o acesso transparente à fonte de dados. d) Session Façade. O BO delega também dados de carga e operações de armazenamento para o DAO. .• • • • b) Data Access Object.