Sto iniziando a lavorare a un nuovo progetto personale per inviare e-mail utilizzando diversi servizi di posta elettronica (come mailchimp, ad esempio). Ho appena iniziato a scrivere codice e ho una classe base chiamata Email:
public class Email
{
private string _to;
private string _from;
private string _body;
private string _templateName;
public Email(string to, string from, string body, string templateName)
{
this._to = to;
this._from = from;
this._body = body;
this._templateName = templateName;
}
}
un'interfaccia chiamata IEmail:
public interface IEmail
{
string Send();
}
e una classe chiamata MailChimpEmail che invierà email usando l'API MailChimps e che eredita da Email e implementa l'interfaccia di IEmail
public class MailChimpEmail : Email, IEmail
{
private string _body;
private string _to;
private string _from;
private string _templateName;
public MailChimpEmail (string to, string from, string body, string templateName) : base(to, from, body, templateName)
{
this._to = to;
this._from = from;
this._body = body;
this._templateName = templateName;
}
public string Send()
{
throw new NotImplementedException();
}
}
Ho intenzione di utilizzare un altro mittente e-mail di terze parti, quindi non sono legato a uno e creerò una nuova classe e implementerò l'interfaccia di IEmail e erediterò l'e-mail. Ma la mia domanda è: devo davvero ereditare l'email? Supponiamo che le classi non acquisiscano alcuna nuova funzionalità e rimangano tali (quindi posso semplicemente inviare una e-mail, è così), che cosa sto guadagnando ereditando la classe base se sto implementando l'interfaccia? Il metodo Send avrà un'implementazione diversa per ogni classe, quindi quale sarebbe il punto?