Padrões de Projeto Composite Observer Strategy Factory Method Mediator Façade.

Slides:



Advertisements
Apresentações semelhantes
TÉCNICO EM INFORMÁTICA Linguagem e Técnica de Programação III PROF. MARCELO N. SANTOS
Advertisements

Mecanismo de busca semântica de áudio Anderson Dorow Orientador: Aurélio Faustino Hoppe.
Capítulo 5 - LVM Conceitos Iniciais O Gerenciador de Volumes Lógicos (LVM), permite a criação de volumes redimensionáveis que podem ser utilizados.
CARTÕES CRC. O começo ● Ward Cunningham e Kent Back contratados pela Tektronix para um projeto de pesquisa.
Retaguarda – Cadastro de Convênio. Objetivo : ● Cadastrar os Convênios da Empresa ; ● Cadastrar os Conveniados ;
Lógica de Programação Aula 25 Prof. Auler Gomes. Introdução - subrotina Muitos problemas grandes ou nem tão grandes, mas de solução mais complexa podem.
ESPECIFICAÇÃO DE PROCESSOS PALESTRANTE, MÊS ANO. HOJE FALAREMOS SOBRE 1.OBJETIVO 2.DIRETRIZES DO DESENHO 3.NOTAÇÕES DO DESENHO 4.PADRÃO DE NUMERAÇÃO 5.EXEMPLO.
Programação em Java Threads Prof. Luiz Antonio Rodrigues Prof. Luiz Antonio Unioeste - Cascavel Jpanel e Diagramadores.
Sistemas Operacionais Instrutor: Anderson Henrique Site:
RUP (R ATIONAL U NIFIED P ROCESS ) GERENCIAMENTO DE CONFIGURAÇÃO E SOLICITAÇÃO DE MUDANÇAS Análise de Sistema ll Prof° Andrea Padovan Ademir Kaique Claudio.
Disciplina: Gerenciamento e Desenvolvimento em Banco de Dados Professora: Chaiene Minella, MSc
SOFTWARE DE GERENCIAMENTO DE LIBERAÇÃO E ATUALIZAÇÃO DE VERSÃO EDUARDO SIEMANN ORIENTADOR: JHONY ALCEU PEREIRA.
Padrões de Projeto Composite Observer Strategy Factory Method Mediator Façade.
Permissões no Linux Funções Proteger o sistema Proteger os arquivos de usuário Definir políticas de acesso ao sistema Permitir ou negar acesso a determinados.
Supervisão e Redes Industriais Tutorial E3 Elipse Capítulo 14 ARMAZENAMENTO DE DADOS Felipe Domeni, Gabriel Martin, Leandro Gomes Rafael Benoliel, Tiago.
FERRAMENTA DE SUPORTE A GESTÃO DE DEFEITOS COM INTEGRAÇÃO ENTRE 0800NET E MANTIS Thiago Fabian Lenzi Professor Everaldo Artur Grahl, Orientador.
Olá! Nesta aula você estudará o que significa interação e como realizar a interação com os alunos.
Andrei Ribeiro de Souza Balbo
Gladius Acesso Treinamento.
Protocolo SMTP e POP O que é SMTP?
Manutenção de Periféricos II
Manual de configuração do backup arquivos
CONSULTORIA EMPRESARIAL
Seja bem vindo a Nossa Transmissão ao vivo sobre o POS PAF
Lei de olho no Imposto.
Padrões de Projeto Estruturais
Introdução OO.
INSTITUTO FEDERAL DO CEARÁ Mauro Oliveira
Análise e Projeto de Sistemas II
UML – Modelação da arquitectura
Criação de Usuários/Grupos
PROGRAMAÇÃO ORIENTADA A OBJETO - JAVA
Orientador: Francisco Adell Péricas
UML: Casos de Uso.
Diagrama de Casos de Uso (Use Cases)
Java: Interfaces Alcides Calsavara.
Access 2010 Microsoft. Access 2010  O Microsoft Access é um Sistema de Gestão de Base de Sados (SGBD) relacional em ambiente gráfico (Windows), que possibilita.
Como Utilizar o Serviço de Apoio ao Gestor
Autorizar Programas para Usuários
Elisabeth Suescún Leandra Mara da Silva
Programação Orientada a Objetos
Inventário Balanço de Estoque
Guia Rápido de Comunicação Visual
Introdução a Redes v5.1 Capítulo 7: Endereçamento IP.
Revisão Requisitos e Casos de Uso
Desenvolvimento em Camadas
BANCO DE DADOS I.
Projeto Orientada a Objetos
Aula 22 Modularização 22/10/08.
SISTEMA OPERACIONAL. Área de trabalho; Como personalizar a área de trabalho; Como criar atalhos; Como personalizar o menu Iniciar; Como associar sons.
Unidade 1: Analise Combinatória 1.1 Conjunto e operações sobre conjunto 1.2 Factorial 1.3 Princípio fundamental da contagem ( princípio multiplicativo)
Envio de marketing Programa e-marketing Envio de marketing.
TCP/IP CRD Filipe Pacheco.
CIÊNCIA DA COMPUTAÇÃO DESENVOLVIMENTO DE SISTEMAS Aula 09
Site integrado C-Link/Dealernet
Prof. Msc. Diovani Milhorim
Aula 5 – Ferramentas de Modelagem
FUNDAMENTOS DE GERENCIAMENTO DE PROJETOS
Nova CMB.
Soluções Inteligentes para ONGs Esportivas
Curso básico de PHP. 1 Vantagens: Gratuito Multiplataforma Estável Rapidez Comunicação.
A UTILIZAÇÃO DO YOUTUBE PARA RESOLUÇÃO DE EXERCÍCIOS EM GRUPO
Paradigma de Orientação a Objetos
Padrões de Projeto.
FERRAMENTAS DA QUALIDADE. Qualidade A qualidade está relacionada á cultura, a um produto ou serviço, e a percepção do individuo, suas expectativas e necessidades,
Gerenciamento de backup e dumps do MySQL
CAPÍTULO 10 Segurança.
BANCO DE DADOS.
Excel 2013 Prof. André Aparecido da Silva
Arquitetura e padrões de software
Transcrição da apresentação:

Padrões de Projeto Composite Observer Strategy Factory Method Mediator Façade

Na aula passada...  Composite  Observer  Strategy  Factory Method  Mediator...

Mediator (Continuação)

Mediator “Definir um objeto que encapsula a forma como um conjunto de objetos interage. O Mediator promove o acoplamento fraco ao evitar que os objetos se refiram uns aos outros explicitamente e permitir variar suas interações independentemente.”

Mediator  O Mediator atua como um mediador entre relacionamentos muitos para muitos;  Outra vantagem é que ele concentra a maneira como os objetos interagem.

Mediator  O padrão Mediator consiste de duas figuras principais: o Mediator e o Colleague. O Mediator recebe mensagens de um Colleague, define qual protocolo utilizar e então envia a mensagem. O Colleague define como receberá uma mensagem e envia uma mensagem para um Mediator.

Mediator  Implementação do Colleague que servirá como base para todos os outros:

Mediator  Define apenas a interface comum de qualquer Colleague.  Todos possuem um Mediator, que deve ser compartilhado entre os objetos Colleague.  Também define a maneira como todos os objetos Colleague enviam mensagens.  O método “receberMensagem()” fica a cargo das subclasses.

Mediator  Como exemplo de Colleague, vejamos as classes a seguir, que representam as plataformas Android e iOS:

Mediator  Vejamos então como funciona o Mediator. Vamos primeiro definir a interface comum de qualquer Mediator:

Mediator  Ou seja, todo Mediator deverá definir uma maneira de enviar mensagens. Vejamos então como o Mediator concreto seria implementado:

Mediator  O Mediator possui uma lista de objetos Colleague que realizarão a comunicação e um método para adicionar um novo Colleague.  O método “enviar()” percorre toda a lista de contatos e envia mensagens.  Note que dentro deste métodos foi feita uma comparação para evitar a mensagem seja enviada para a pessoa que enviou.

Mediator  Para enviar a mensagem primeiro deve ser definido qual protocolo utilizar e em seguida enviar a mensagem.  No nosso exemplo, o método “definirProtocolo()” apenas imprime na tela o tipo do Colleague que enviou a mensagem, utilizar para isso a verificação instanceof.

Mediator  Desta maneira, o cliente poderia ser algo do tipo:

Mediator

 O padrão Mediator tem como principal objetivo diminuir a complexidade de relacionamentos entre objetos, garantindo assim que todos fiquem mais livres para sofrer mudanças, bem como facilitando a introdução de novos tipos de objetos ao relacionamento.

Mediator  Outro ganho é a centralização da lógica de controle de comunicação entre os objetos, imagine que o protocolo de comunicação com o Android precisasse ser alterado, a mudança seria em um local bem específico da classe Mediator.

Façade Problema  No desenvolvimento de jogos é comum a utilização de subsistemas de um Framework/API.  Por exemplo, para reproduzir um determinado som é utilizado o subsistema de Audio, que normalmente provê funcionalidades desde a configuração da reprodução de audio, até a reprodução de um determinado arquivo.

Façade  Antes de iniciar o jogo de fato é necessário realizar ajustes em todos os subsistemas que serão utilizados, por exemplo, é necessário configurar a resolução do subsistema de Vídeo para que este possa renderizar imagens corretamente.

Façade

 Ela fornece os métodos para configuração e reprodução de arquivos de áudio. Para reproduzir um arquivo de áudio, por exemplo, seria necessário realizar as seguintes operações:

Façade  Neste exemplo de código cliente, o próprio cliente deve instanciar e configurar o subsistema para que só depois seja possível a utilização dos mesmos. Além disso, existe um comportamento padrão que é executado antes de reproduzir um som: sempre deve ser configurado o canal, a frequência e o volume.

Façade  Agora pense como seria caso fosse necessário utilizar vários subsistemas? O código cliente ficaria muito sobrecarregado com responsabilidades que não são dele:

Façade  Como o padrão Facade pode resolver este pequeno problema.

Façade “Fornecer uma interface unificada para um conjunto de interfaces em um subsistema. Facade define uma interface de nível mais alto que torna o subsistema mais fácil de ser usado.”

Façade  De acordo com a descrição do padrão é possível notar que pode-se ajudar bastante na resolução do nosso problema. O conjunto de interfaces seria exatamente o conjunto de subsistemas. Um subsistema é análogo a uma classe, uma classe encapsula estados e operações, enquanto um subsistema encapsula classes.

Façade  Nesse sentido o Facade vai definir operações a serem realizadas com estes subsistemas. Assim, é possível definir uma operação padrão para configurar o subsistema de audio, evitando a necessidade de chamar os métodos de configuração de audio a cada novo arquivo de audio que precise ser reproduzido.

Façade  A utilização do padrão Facade é bem simples. apenas é necessário criar a classe fachada que irá se comunicar com os subsistemas no lugar no cliente:

Façade  A classe fachada realiza a inicialização de todos os subsistemas e oferece acesso aos métodos necessários, por exemplo o método de renderização de uma imagem, a reprodução de um audio.

Façade  Com esta mudança, tiramos toda a responsabilidade do cliente, que agora precisa se preocupar apenas em utilizar os subsistemas que desejar.

Façade  A utilização do padrão é bem simples e poder ser aplicado em várias situações.  A ideia básica do padrão, como visto, é remover a complexidade das classes clientes.

Façade  Visualmente falando, ele faz o seguinte:

Façade  Note que as classes do subsistema continuam sendo visíveis em todo o projeto.  Portanto, caso seja necessário, o cliente pode definir suas configurações sem sequer utilizar a classe fachada.  Ainda mais, o cliente pode criar uma fachada própria, que define suas operações customizadas. Por exemplo, se não serão utilizados joysticks no projeto, não há necessidade de inicializá-los.

Façade  O problema com essa centralização da complexidade é que a classe fachada pode crescer descontroladamente para abrigar uma conjunto grande de possibilidades. Nestes casos pode ser mais viável procurar outros padrões, como Abstract Factory para dividir as responsabilidades entre subclasses.

Façade  Uma semelhança que também pode ser notada é com o padrão Mediator, já que ambos reduzem a complexidade entre um grande conjunto de objetos.  A diferença é que como o padrão Mediator centraliza a comunicação entre os objetos colegas, normalmente adicionando novas funcionalidades e sendo referenciado por todos os colegas.  No padrão Facade, a classe fachada apenas utiliza os subsistemas, sem adicionar nada, além disso as classes do subsistema não sabem nada sobre a fachada.

Padrões de Projeto Padrões de projetos : soluções reutilizáveis de software orinetado a objetos. Porto Alegre Bookman Recurso online ISBN