Filter
Design Pattern
Definição

Filter é um padrão de projeto utilizado para análise e
tratamento de dados. Com esse padrão é possível
utilizar um ou mais objetos (filtros) que tratam ou
operam um fluxo de dados de maneira específica, a fim
de obter soluções genéricas (reutilizáveis).
Padrões Relacionados

Possui alguns padrões relacionados:
Decorator;
 Composite;
 Pipe;

Contexto

Análise simples de fluxo de dados podem ser
comum a vários programas.

Uma maneira de conseguir flexibilidade é
definir uma superclasse (Filter) genérica para
Instanciar os objetos das subclasses.
Solução
Através de uma combinação de classes
abstratas e delegação, uma solução é
realizada.
 O padrão Filter organiza as classes que
dele participam como fonte de dados,
sink(consumidores) de dados e filtros de
dados.
 As classes de dados do Filter executam
as operações de transformação e análise.

Formas Básicas

Os fluxos de dados acontecendo quando um
filtro pega os dados de um outro objeto fonte.
Participantes
 AbstractSource

Esta classe abstrata declara um método, indicado no
diagrama como getData, que retorna os dados quando
é chamado.
 ConcreteSource

corresponde a qualquer subclasse concreta de
AbstractSource que é o principal responsável pelo
fornecimento de dados ao invés de transformar ou
análisar dados.
Participantes
 AbstractSourceFilter

Superclasse das classes que transformam e analisam
dados. Ela tem um construtor que recebe um argumento
que é a instância da classe AbstractSource. Instâncias
de uma classe AbstractSourceFilter delegam a busca de
dados para o objeto AbstractSource passado para o seu
construtor.
 ConcreteSourceFilter

corresponde a qualquer subclasse concreta de
AbstractSourceFilter. Subclasses de abstractSourceFilter
devem estender o comportamento do método getData
que herdam de AbstractSourceFilter para executar a
transformação adequada ou analisar as operações.
Participantes
 AbstractSink
Representao o cliente da nossa aplicação.
 Ao contrário dos objetos ConcreteSourceFilter,
instâncias de classes abstract sink usam os dados sem
passá-lo para outro objeto AbstractSourceFilter.

Vantagens



As classes que implementam transformações
comum de dados e analises são utilizadas em
uma grande variedade de programas.
Deve ser possível combinar a dinâmica de
análise de dados e objetos de transformação,
ligando-os juntos.
O uso de objetos de transformação e análise
deve ser transparente para outros objetos.
Usos comuns dos filtros
Conversão de dados para um formato especifico.
 Adição de informações às mensagens recebidas.
 Filtragem de dados.
 Lotes, agregando 10 mensagens recebidas e enviá-las
juntas em uma única saída por exemplo.
 Concatenando os elementos de dados de mensagens
relacionadas em uma única mensagem de saída

EXEMPLO DE APLICAÇÃO

Autenticação de Usuário (WEB).
O exemplo da aplicação tem o objetivo de fazer com que dois usuários se autentiquem no
sistema, um como administrador e outro como usuário padrão. Após autenticação o sistema
utilizará filtros (utilização do padrão Filter) de controle para definir o tipo de acesso que cada
usuário terá no sistema. O usuário administrador terá acesso total e o usuário padrão terá acesso
restrito.
OBS: O arquivo fonte desta aplicação se encontra no arquivo NetBeans_Exemplo_Pratica.rar.
EXEMPLO DE APLICAÇÃO
Prática
Com base nos conhecimentos obtidos do padrão Filter e dado o diagrama de classe
abaixo e as classes X, Y implemente uma solução que busque do arquivo e imprima o
login de todos os usuários e imprima uma lista de todos os e-mails que serão
desativados por não serem acessados a mais de 20 dias.
Obs: Deverá ser colocado na classe ArquivoeIp.java o caminho para o arquivo input.txt,
que contém os dados a serem lidos.
O programa devera imprimir a seguinte saída:
Login de todos os usuários:
E-mails que serão desativados:
- [email protected]
- [email protected]
Diagrama da Prática
Dúvidas?

CONTATOS
 [email protected][email protected][email protected]
REFERÊNCIAS




http://msdn.microsoft.com/en-us/library/ff647419.aspx
http://tutorials.freeskills.com/professional-xml-part-4-s
http://www.eaipatterns.com/PipesAndFilters.html ome-sax-designpatterns.htm
http://www.batebyte.pr.gov.br/modules/conteudo/conteudo.php?cont
eudo=1049
Download

Apresentação ()