public interface IBridgeComponents
{
void Envia(string tipoMensagem);
}
public abstract class EnviaDados
{
public IBridgeComponents _iBridgeComponents { get; set; }
public abstract void Envia();
}
public class EnviaPorEmail : EnviaDados
{
public override void Envia()
{
_iBridgeComponents.Envia("E-mail");
}
}
public class EnviaPorSMS : EnviaDados
{
public override void Envia()
{
_iBridgeComponents.Envia("SMS");
}
}
public class API : IBridgeComponents
{
public void Envia(string tipoMensagem)
{
Console.WriteLine("Enviando " + tipoMensagem + " usando uma API." );
}
}
public class WebService : IBridgeComponents
{
public void Envia(string tipoMensagem)
{
Console.WriteLine("Enviando " + tipoMensagem + " usando WebService.");
}
}
class Program
{
static void Main(string[] args)
{
// Usando o envio por e-mail
EnviaDados enviaDado = new EnviaPorEmail();
enviaDado._iBridgeComponents = new WebService();
enviaDado.Envia();
enviaDado._iBridgeComponents = new API();
enviaDado.Envia();
// Usando o envio por SMS
enviaDado = new EnviaPorSMS();
enviaDado._iBridgeComponents = new WebService();
enviaDado.Envia();
enviaDado._iBridgeComponents = new API();
enviaDado.Envia();
}
}