Data una classe base con circa 25 sottoclassi, ho trovato che aggiungere un argomento al costruttore base è doloroso.
protected AbstractController(Service1 s1, Service2 s2, Service3 s3){ ... }
public Concrete1Controller(Service1 s1, Service2 s2, Service3 s3) : base(s1, s2, s3)
public Concrete2Controller(Service1 s1, Service2 s2, Service3 s3) : base(s1, s2, s3)
Ora che ho bisogno di un altro oggetto passato al mio controller di base, sto discutendo di introdurre una classe wrapper e refactoring in modo che sia richiesto un solo parametro nei costruttori delle (più) istanze concrete.
public class ServiceLayer
{
public Service1 S1 {get; private set; }
public Service2 S2 {get; private set; }
public Service3 S3 {get; private set; }
public ScheduledReportServices(Service1 s1, Service2 s2, Service3 s3)
{
S1 = s1;
S2 = s2;
S3 = s3;
}
}
Che mi permetterà di pulire un bel po '.
protected AbstractController(ServiceLayer sl){ ... }
public Concrete1Controller(ServiceLayer sl) : base(sl)
public Concrete2Controller(ServiceLayer sl) : base(sl)
Dato l'ammontare che questo riduce il disordine, sono una droga per non farlo all'inizio o c'è un argomento valido contro questo tipo di approccio.
Sarei interessato a) sapere come si chiama questo "modello" eb) se me ne pentirò e, in caso affermativo, perché?