Use e combine várias interfaces

Concluído

Como um desenvolvedor C#, em projetos maiores, você normalmente implementa várias interfaces dentro de uma única classe. Esse conhecimento é essencial para criar código flexível e reutilizável em C#.

Executar a implementação de múltiplas interfaces

Uma classe pode implementar várias interfaces, permitindo que inclua o comportamento de várias fontes. Esse recurso é importante em C# porque a linguagem não suporta herança múltipla de classes. Ao implementar várias interfaces, você pode obter o efeito de herança múltipla e fornecer uma API comum suportada por vários tipos, incluindo tipos de valor.

Para implementar várias interfaces em uma classe C#, cada membro da interface deve ser implementado com o mesmo nome e assinatura, conforme especificado na interface.

public interface ICanDrive
{
    void Drive();
}

public interface ICanFly
{
    void Fly();
}

public class SuperCar : ICanDrive, ICanFly
{
    public void Drive()
    {
        // Implementation of Drive
    }

    public void Fly()
    {
        // Implementation of Fly
    }
}

Várias interfaces em uma única classe

A combinação de várias interfaces em uma única classe C# envolve a implementação de todos os métodos e propriedades necessários de cada interface. Essa abordagem permite que você misture e combine recursos e crie classes que suportam várias funcionalidades.

Por exemplo, considere um aplicativo de leitor de música com diferentes tipos de controles. Cada controle deve oferecer suporte a APIs para reproduzir, pausar e relatar o estado atual. Alguns controles podem suportar outros recursos, como pular para a próxima faixa ou ajustar o volume.

public interface IControl
{
    void Play();
    void Pause();
    bool IsPlaying { get; }
}

public interface ISkipControl : IControl
{
    void SkipToNext();
}

public interface IVolumeControl : IControl
{
    void AdjustVolume(int level);
}

public class MusicPlayer : ISkipControl, IVolumeControl
{
    public void Play() { /* Implementation */ }
    public void Pause() { /* Implementation */ }
    public bool IsPlaying { get; private set; }

    public void SkipToNext() { /* Implementation */ }
    public void AdjustVolume(int level) { /* Implementation */ }
}

Neste exemplo, a MusicPlayer classe combina as funcionalidades de IControl, ISkipControle IVolumeControl interfaces, fornecendo implementações para todos os métodos e propriedades necessários.

Em C#, os métodos de interface padrão ajudam na combinação de diferentes recursos. Os métodos de interface padrão são inerentemente virtuais, portanto, podem ser substituídos, se necessário. Os criadores de classe podem selecionar as interfaces a serem usadas, garantindo que o método da classe seja sempre escolhido. Ao aplicar várias interfaces, você pode projetar classes modulares, flexíveis e capazes de suportar diversas funcionalidades. Embora essa abordagem introduza alguma complexidade na implementação, ela promove uma melhor separação de preocupações e torna sua base de código mais resiliente às alterações. Em última análise, a combinação de interfaces leva a soluções mais sustentáveis e escaláveis, especialmente em projetos maiores, onde a adaptabilidade é fundamental.