디자인 패턴 - 1 - 전략(C#)

Padrões de projeto, ou design patterns, são bem Importantes para escrever codigos limpos, manuteníveis, legíveis e bem estruturados de acordo com cada situação, ou seja, para trazer soluções elegantes para problemas recorrentes.

Para iniciar o estudo desses padrões, temos o padrão Strategy, um padrão comportamental que traz uma estratégia para lidar com a repetição e reaproveitamento de algoritmos em comum a diversas class. Para isto, utilizamos interface que possuem uma definição desses métodos comuns e um conjunto de class que implementam essa interface, concentrando toda a manipulação desse método no objeto e não tendo que criar código repetido em cada classe criada.

Para que fique mais claro, temos como exemplo uma calculadora de impostos, onde os métodos de cada imposto tem uma mesma estrutura, mudando apenas a taxa de acordo com o imposto escolhido. Para evitar que cry-se uma estrutura gigantesca com várias condicionais ou métodos, separamos os impostos em classes e criamos uma interface com a definição do método de cálculo do imposto recebendo o orçamento como paraâmetro. 클래스가 인터페이스를 구현함에 따라 CalculadoraDeImpostos에 대한 가능성이 있는 방법을 사용할 수 있으며, 정의에 따라 다양한 방법으로 사용할 수 있습니다.

Impostos 클래스 정의에 대한 테모스:

ICMS

using System;
namespace DesignPatterns.Impostos
{
    public class ICMS : Imposto
    {
        public double Calcula(Orcamento orcamento)
        {
            return orcamento.Valor * 0.1;
        }
    }
}


ISS

using System;
namespace DesignPatterns.Impostos
{
    public class ISS : Imposto
    {
        public double Calcula(Orcamento orcamento)
        {
            return orcamento.Valor * 0.6;
        }
    }
}


집중은 조직을 관리하고 조직/조작을 용이하게 합니다.

인터페이스 Imposto traz então a definição do método Calcula, comum entre os diversos impostos:

임포스토

using System;
namespace DesignPatterns
{
    public interface Imposto
    {
        double Calcula(Orcamento orcamento);
    }
}


Na classe da calculadora de impostos, temos o método que recebe o orçamento e o tipo de imposto e chama o método Calcula informando o orçamento como paraâmetro.

계산기DeImpostos

using System;
using DesignPatterns.Impostos;

namespace DesignPatterns
{
    public class CalculadoraDeImpostos
    {
        public void RealizaCalculo(Orcamento orcamento, Imposto imposto)
        {
            double valor = imposto.Calcula(orcamento);
            Console.WriteLine(valor);
        }
    }
}


Na classe orçamento, que recebe o valor, temos:

오르카멘토

using System;
namespace DesignPatterns
{
    public class Orcamento
   {
        public double Valor { get; private set; }

        public Orcamento(double valor)
        {
            this.Valor = valor;
        }
    }
}


E então na classe Program, instanciamos um orçamento e um imposto e calculamos e realizamos o calculo informando essas propriedades:

프로그램

// See https://aka.ms/new-console-template for more information
using DesignPatterns;
using DesignPatterns.Impostos;

Orcamento orcamento = new Orcamento(500.00);

Imposto imposto = new ICMS();

CalculadorDeImpostos calculador = new CalculadorDeImpostos();

calculador.RealizaCalculo(orcamento, imposto);


A resposta no terminal será: 50.00.

Então, o padrão comportamental Strategy permite que uma família de algoritmos similares se conversem, mas sejam separados em classes, tornando o código desacoplado e bem distribuído.

좋은 웹페이지 즐겨찾기