Ho un set di tipi che possono essere personalizzati dai formattatori. Un formattatore è un oggetto funzione definito come Func<string, string, string>
. Il client di una libreria può scegliere di implementare FormattedLoggerBase con uno dei formattatori forniti o scriverne uno nuovo.
public abstract class FormattedLoggerBase : LoggerBase
{
public Func<string, string, string> Formatter { get; set; }
/.../
}
Dove è il posto migliore dove mettere tutti gli oggetti funzione?
- Una classe statica?
- Classi wrapper che implementano IFormatter?
- Factory?
La classe statica ha un overhead minimo, ma le classi wrapper fornirebbero un messaggio chiaro agli utenti, che può essere iniettato da formattatore. D'altra parte, forniscono molto spazio sul codice, oltre che in fabbrica. Quale sceglieresti e perché? O forse hai una soluzione migliore?