DEV Community

Juarez Júnior for Develop4Us

Posted on • Edited on

C# Design Pattern: Interpreter (Portugues)

O padrão Interpreter é usado para interpretar ou avaliar expressões em uma linguagem simples. Ele define uma gramática para expressões e um mecanismo para interpretar essas expressões. É útil quando você precisa processar ou avaliar comandos ou regras repetidamente, como em calculadoras ou linguagens de script.

Exemplo de Código em C#:

// Interface para expressões
public interface IExpressao
{
    int Interpretar();
}

// Expressão para números
public class Numero : IExpressao
{
    private int _valor;

    public Numero(int valor)
    {
        _valor = valor;
    }

    public int Interpretar()
    {
        return _valor;
    }
}

// Expressão para adição
public class Adicao : IExpressao
{
    private IExpressao _esquerda;
    private IExpressao _direita;

    public Adicao(IExpressao esquerda, IExpressao direita)
    {
        _esquerda = esquerda;
        _direita = direita;
    }

    public int Interpretar()
    {
        return _esquerda.Interpretar() + _direita.Interpretar();
    }
}

// Expressão para subtração
public class Subtracao : IExpressao
{
    private IExpressao _esquerda;
    private IExpressao _direita;

    public Subtracao(IExpressao esquerda, IExpressao direita)
    {
        _esquerda = esquerda;
        _direita = direita;
    }

    public int Interpretar()
    {
        return _esquerda.Interpretar() - _direita.Interpretar();
    }
}

class Program
{
    static void Main(string[] args)
    {
        // Criar expressões: (10 + 5) - 3
        IExpressao expressao = new Subtracao(
            new Adicao(new Numero(10), new Numero(5)),
            new Numero(3)
        );

        // Interpretar e exibir o resultado
        int resultado = expressao.Interpretar();
        Console.WriteLine($"Resultado da expressão: {resultado}"); // Saída: Resultado da expressão: 12
    }
}
Enter fullscreen mode Exit fullscreen mode

Explicação do Código:

Neste exemplo, temos uma interface IExpressao, que define o método Interpretar. As classes Numero, Adicao e Subtracao implementam essa interface para representar diferentes tipos de expressões. O código cria uma expressão que soma 10 e 5, depois subtrai 3, e então interpreta o resultado. O padrão Interpreter permite que você construa e avalie expressões de forma flexível.

Conclusão:

O padrão Interpreter é útil quando você precisa definir uma gramática e interpretar expressões repetidamente. Ele é aplicado em situações como calculadoras, processadores de linguagens de script ou sistemas que precisam avaliar regras ou comandos.

Código fonte: GitHub

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay