O que é?
Este padrão é útil quando o objetivo é proporcionar um programa para um cliente ou um usuário a capacidade de especificar as operações em uma simples linguagem.
Mais adequado quando a gramática é simples, para evitar a necessidade de ter muitas classes correspondentes ao complexo conjunto de regras envolvidas.
Estrutura:
Problema:
Contexto:
O padrão interpreter pode ser usado para a criação desta capacidade, quando queremos um aplicativo para que outras aplicações e os usuários possam especificar as operações utilizando uma linguagem simples, definida por um conjunto de regras gramaticais.
Solução:
Vamos construir uma aplicação para uma calculadora que avalia uma expressão aritmética dada.
Para simplificar nosso exemplo vamos considerar somente adição(+), e subtração (-).
Agora vamos criar um algoritmo genérico.
Onde teremos as seguintes classes:
Class Adicao implements Calculadora { }
Onde haverá todas as regras para efetuarmos um adição.
Class Subtracao implements Calculadora { }
Onde haverá todas as regras para efetuarmos uma subtração.
Class Interpreter { }
Onde haverá todas as condições de qual classe será chamada quando o usuário digitar (+) ou (-) por exemplo.
Interface Calculadora { }
Onde vamos ter o método operação (stack
Prós:
- Encapsulamento.
Separação de vários comportamentos em classes. - Limpa o código do cliente.
Contra:
- Complexidade:
Caso haver muitas validações em uma operação, o programa pode se tornar complexo. - Manutenção:Poderá ser difícil prestar manutenção para um sistema com uma extensa quantidade de classes para gerenciar todo um conjunto de regras envolvidas em uma operação.
- Adicionar comportamento:Pois deveremos adicionar uma classe com um novo comportamento, e sempre adicioná-la na classe Interpreter.
Nenhum comentário:
Postar um comentário
DÚVIDAS - CRITICAS - SUGESTÕES