Padr˜
oes de Projeto de Software
Introdu¸c˜aoPaulo Gomide
Departamento de Ciˆencia da Computa¸c˜ao Universidade de Ita´una
Sumary
Cat´alogo de Padr˜oes
Primeiro Contato com os 23 Padr˜oes
Um Exemplo da Utiliza¸c˜ao de Padr˜oes em um Sistema MVC
Padr˜oes Aplicados a um Sistema MVC
Teste 1
Teste 1
Fim
Padr˜
oes Criacionais
Factory Method
Define uma interface para cria¸c˜ao de um objeto, permitindo que as suas subclasses decidam qual classe instanciar. O Factory Method deixa a responsabilidade de instancia¸c˜ao para as subclasses.
Abstract Factory
Provˆe uma interface para cria¸c˜ao de fam´ılias de objetos relacionados ou interdependentes, sem especificar suas classes concretas. Remove a dependˆencia entre o cliente, que usa os objetos, e a classe dos objetos produzidos.
Padr˜
oes Criacionais
Builder
Separa a constru¸c˜ao de um objeto complexo de sua representa¸c˜ao, atrav´es de uma interface gen´erica para a constru¸c˜ao incremental de agrega¸c˜oes. Um Builder esconde os detalhes de como os componentes s˜ao criados, representados e compostos.
Prototype
Especifica os tipos de objetos a serem criados num sistema, usando uma instˆancia prot´otipo. Cria novos objetos copiando este prot´otipo.
Singleton
Assegura que uma classe tenha apenas uma instˆancia e provˆe um ponto global de acesso a ela.
Padr˜
oes Estruturais
Adapter
Converte a interface de uma classe em outra, esperada pelo cliente. O Adapter permite classes que antes n˜ao poderiam trabalhar juntas, por incompatibilidade de interfaces, possam agora fazˆe-lo.
Bridge
Separa uma abstra¸c˜ao de sua implementa¸c˜ao, de modo que ambas possam variar independentemente.
Composite
Comp˜oe objetos em ´arvores de agrega¸c˜ao (relacionamento parte-todo). O Composite permite que objetos agregados sejam tratados como um ´
Padr˜
oes Estruturais
Decorator
Anexa responsabilidades adicionais a um objeto dinamicamente. Provˆe uma alternativa flex´ıvel para extens˜ao de funcionalidade sem a
necessidade de subclasses.
Facade
Provˆe uma interface unificada para um conjunto de interfaces em um subsistema. O Facade define uma interface alto n´ıvel para facilitar o uso deste subsistema.
Proxy
Padr˜
oes Comportamentais
Interpreter
Trata uma determinada linguagem, definindo uma representa¸c˜ao para sua gram´atica de modo que o interpretador possa interpretar senten¸cas da linguagem e prover abstra¸c˜oes para sua an´alise sint´atica.
Template Method
Definindo o esqueleto de um algoritmo em uma opera¸c˜ao, permite que subclasses componham o algoritmo e tenham a possibilidade de redefinir certos passos a serem tomados no processo, sem contudo mud´a-lo.
Chain of Responsability
Representa o encadeamento de objetos receptores para o processamento de uma s´erie de solicita¸c˜oes diferentes e transporta a mensagem atrav´es da corrente at´e que um dos objetos a trate. Assim, separa objetos transmissores dos receptores, dando a chance de mais de um objeto poder tratar a solicita¸c˜ao.
Padr˜
oes Comportamentais
Command
Encapsula uma solicita¸c˜ao como um objeto, de modo que clientes possam parametrizar diferentes solicita¸c˜oes, enfileirar ou fa¸cam registros que suportem que as opera¸c˜oes sejam desfeitas. Separa, ent˜ao, o criador da mensagem do executor da mesma.
Flyweight
Usa o compartilhamento de dados para dar suporte eficiente a um grande n´umero de objetos com alto n´ıvel de granularidade, evitando um uso excessivo e desnecess´ario de mem´oria.
Iterator
Provˆe um modo de acesso a elementos de um agregado de objetos, sequencialmente, sem exposi¸c˜ao de estruturas internas.
Padr˜
oes Comportamentais
Mediator
Desacopla e gerencia as colabora¸c˜oes entre um grupo de objetos. Define um objeto que encapsula as intera¸c˜oes dentro desse grupo.
Memento
Sem violar o encapsulamento, captura e externaliza o estado interno de um objeto num devido momento (“snapshot”), de modo que este estado possa ser restaurado posteriormente.
Observer
Provˆe sincroniza¸c˜ao, coordena¸c˜ao e consistˆencia entre objetos relacionados, considerando o impacto da altera¸c˜ao de um objeto nos demais.
Padr˜
oes Comportamentais
State
Permite que um objeto mude seu comportamento quando seu estado interno muda. Sua aplica¸c˜ao d´a a impress˜ao que o objeto mudou efetivamente sua classe relacionada.
Strategy
Define uma fam´ılia de algoritmos, encapsula cada um deles como uma classe, e torna flex´ıvel a escolha de qual usar. O padr˜ao Strategy desacopla os algoritmos dos clientes que os usa.
Visitor
Representa uma opera¸c˜ao a ser realizada sobre elementos da estrutura de um objeto. O Visitor permite que se crie um nova opera¸c˜ao sem que se mude a classe dos elementos sobre as quais ela opera.
Padr˜
oes Aplicados a um Sistema MVC
Descri¸c˜
ao de MVC
• Model/View/Controller ´e um padr˜ao de arquitetura de software que visa separar a l´ogica de neg´ocio da l´ogica de apresenta¸c˜ao,
permitindo o isolamento do desenvolvimento, teste e manuten¸c˜ao isolado de ambos.
• Um sistema que segue o padr˜ao MVC apresenta os 3 componentes b´asicos: Model, View e Controller.
• Ao contr´ario de sistemas antecessores a sua solidifica¸c˜ao, o padr˜ao MVC atrav´es do desacoplamento desses componentes aumenta a flexibilidade e a reusabilidade do sistema.
Padr˜
oes Aplicados a um Sistema MVC
Componentes de MVC
• Model (Modelo): representa a aplica¸c˜ao em si. ´E usado para definir e gerenciar o dom´ınio da informa¸c˜ao e notificar observadores sobre mudan¸ca nos dados.
• View (Vis˜ao): apresenta na sa´ıda de dados o modelo num formato adequado ao utilizador. Diferentes vis˜oes podem existir para um mesmo modelo, para diferentes prop´ositos.
• Controller (Controlador): recebe os dados de entrada e ap´os realizar a valida¸c˜ao e filtragem destes, inicia a resposta ao utilizador ao invocar objetos do modelo.
Desacomplamento → Padr˜
ao Observer
Problema Espec´ıfico
Desacoplar os m´odulos views dos m´odulos models.
Problema Geral
Desacoplar objetos de modo que mudan¸cas em um deles possam afetar outros, sem a necessidade de que o objeto alterado conhe¸ca detalhes dos demais objetos.
Vis˜
ao Composta → Padr˜
ao Composite
Problema Espec´ıfico
Permitir que um m´odulo views seja composto por v´arios objetos mais simples (subclasse CompositeView).
Problema Geral
Permitir o agrupamento de objetos de forma que eles possam ser
tratados como um ´unico objeto. Assim ´e poss´ıvel criar uma hierarquia de classes de modo que subclasses definam objetos primitivos e outras classes definam objetos compostos, que agrupam objetos primitivos formando objetos mais complexos.
Novo Tratamento da Resposta → Padr˜
ao Strategy
Problema Espec´ıfico
Mudar a forma como o m´odulo view reage a entrada do usu´ario alterando apenas o m´odulo Controller, a fim de evitar altera¸c˜oes na apresenta¸c˜ao visual.
Problema Geral
Representar um algoritmo atrav´es de um objeto, a fim de facilitar:
• A substitui¸c˜ao de um algoritmo no sistema est´atica ou dinamicamente;
• A disponibiliza¸c˜ao de variantes de um algoritmo;
• O encapsulamento de estruturas de dados complexas de um algoritmo.
Teste 1
Quest˜
ao 1
Defina com suas palavras o que ´e um Padr˜ao de Projeto de Software.
Quest˜
ao 2
Trace um paralelo entre desenvolvimento de um projeto pequeno e um projeto grande, descrevendo as dificuldades inerentes a cada um, onde se concentram os principais esfor¸cos, as preocupa¸c˜oes e cuidados que devem ser tomados em cada um e a importˆancia da defini¸c˜ao dos padr˜oes a serem utilizados em cada situa¸c˜ao.
Quest˜
ao 3
Descreva resumidamente um padr˜ao criacional, um estrutural e um comportamental de sua escolha.
Obrigado pela aten¸c˜ao!