Ho un esempio dei modelli di progettazione che dimostra il modello dell'adattatore. Ma vedo casting per la classe derivata qui. Non è molto buono Se incontro questo tipo di codice nella mia pratica, qual è il modo migliore per rifattenerlo? O quali principi dovrei seguire per evitare tale situazione?
public class SqlServerLogSaverAdapter : ILogSaver
{
private readonly SqlServerLogSaver _sqlServerLogSaver = new SqlServerLogSaver();
public void Save(LogEntry logEntry)
{
var simpleEntry = logEntry as SimpleLogEntry;
if (simpleEntry != null)
{
_sqlServerLogSaver.Save(simpleEntry.EntryDateTime,
simpleEntry.Severity.ToString(),
simpleEntry.Message);
return;
}
var exceptionEntry = (ExceptionLogEntry)logEntry;
_sqlServerLogSaver.SaveException(exceptionEntry.EntryDateTime,
exceptionEntry.Message,
exceptionEntry.Exception);
}
}
ps. Può essere un modello di visitatore che lo risolve ma non ne sono sicuro.