Interpreter: diferenças entre revisões
Adicionado casos de uso e características do padrão. |
|||
Linha 16: | Linha 16: | ||
[[Ficheiro:Interpreter.png|miniaturadaimagem|331x331px|Representação da descrição acima.|nenhum]] |
[[Ficheiro:Interpreter.png|miniaturadaimagem|331x331px|Representação da descrição acima.|nenhum]] |
||
== Casos de uso == |
|||
* Formato das consultas em banco de dados especializados como em [[SQL]]. |
|||
* Formato de mensagens usados pelos protocolos de comunicação. |
|||
* Tradução/conversão de linguagens ou símbolos para outra linguagem como números romanos para números decimais. |
|||
* Uso em expressões regulares ou XML. |
|||
* Uso de interpretação de formato em datas como DD-MM-AAAA ou MM-DD-AAAA. |
|||
== Características == |
|||
* Baixa freqüência de uso. |
|||
* Fácil extensão ou alteração da gramática. |
|||
* Implementar uma regra gramatical é fácil. |
|||
* É possível adicionar várias vias de interpretação. |
|||
== Referência == |
== Referência == |
||
https://sourcemaking.com/design_patterns/interpreter<ref>{{Citar web|url=https://sourcemaking.com/design_patterns/interpreter|titulo=Design Patterns and Refactoring|acessodata=2016-09-29|obra=sourcemaking.com}}</ref>{{Esboço-prog}} |
https://sourcemaking.com/design_patterns/interpreter<ref>{{Citar web|url=https://sourcemaking.com/design_patterns/interpreter|titulo=Design Patterns and Refactoring|acessodata=2016-09-29|obra=sourcemaking.com}}</ref>{{Esboço-prog}} |
||
<ref>http://www.dofactory.com/net/interpreter-design-pattern</ref> |
|||
{{Padrões de projeto}} |
{{Padrões de projeto}} |
Revisão das 04h56min de 2 de outubro de 2016
Definição
Interpreter é um dos padrões de projeto de software, famosos como "Design Patters", muito utilizado para a resolução de problemas quando a modelagem de sistemas ou softwares. Esse padrão esta incluso na categoria de Padrão Comportamental, ou seja, ele busca solucionar problemas de modelagem que tratam o comportamento de classes.
Intenção
Dada uma determinada linguagem, o padrão Interpreter define uma representação para sua gramática juntamente com um interpretador que usa a representação para interpretar sentenças na língua. Ou mapear um domínio para uma língua, a língua para uma gramática e a gramática para um projeto de design hierárquico orientado a objetos.
Problema
O padrão Interpreter busca em geral resolver o seguinte problema: que uma classe de problemas ocorre repetidamente em um domínio bem definido e bem compreendido. Se o domínio for caracterizado como uma linguagem, então os problemas poderiam ser facilmente resolvidos com uma interpretação da engine.
Estrutura
O padrão Interpreter sugere modelar o domínio com uma gramática recursiva. Cada regra na gramática é tanto um 'composite' (uma regra que referencia outras regras) ou um 'terminal' (uma folha/nó numa estrutura de árvore). O Interpreter baseia-se na travessia recursiva do padrão Composite para interpretar as 'sentenças' que ele deve processar.
Exemplo
O padrão Interpreter define uma representação gramatical de uma linguagem e um intérprete para realizar a interpretação da gramática. Os músicos são exemplos de intérpretes. O tom de um som e sua duração podem ser representados em uma notação musical em conjunto. Esta notação fornece a linguagem da música. Músicos tocando a música da partitura são capazes de reproduzir o tom original e duração de cada som representado.
Casos de uso
- Formato das consultas em banco de dados especializados como em SQL.
- Formato de mensagens usados pelos protocolos de comunicação.
- Tradução/conversão de linguagens ou símbolos para outra linguagem como números romanos para números decimais.
- Uso em expressões regulares ou XML.
- Uso de interpretação de formato em datas como DD-MM-AAAA ou MM-DD-AAAA.
Características
- Baixa freqüência de uso.
- Fácil extensão ou alteração da gramática.
- Implementar uma regra gramatical é fácil.
- É possível adicionar várias vias de interpretação.
Referência
https://sourcemaking.com/design_patterns/interpreter[1]
- ↑ «Design Patterns and Refactoring». sourcemaking.com. Consultado em 29 de setembro de 2016
- ↑ http://www.dofactory.com/net/interpreter-design-pattern