Sto estendendo un corso con 10 diversi costruttori . La nuova sottoclasse, SpecialImage
, viene utilizzata in questo modo:
SpecialImage specialImage = new SpecialImage(..);
// Leverage the Rotate() method of superclass Image, which
// returns a new rotated image.
// Notice the type is still SpecialImage.
SpecialImage rotated = specialImage.Rotate(...);
SpecialImage
implementa 5 dei costruttori, ognuno dei quali prende gli stessi parametri aggiuntivi, Thing stuff
e int range
:
public class SpecialImage<TDepth> : Image<Gray, TDepth>
where TDepth : new()
{
Thing _stuff;
int _range;
public SpecialImage(Thing stuff, int range) : base()
{
InitParams(stuff, range)
}
public SpecialImage(Thing stuff, int range, Size size) : base(size)
{
InitParams(stuff, range)
}
public SpecialImage(Thing stuff, int range, int width, int height) : base(width, height)
{
InitParams(stuff, range)
}
public SpecialImage(Thing stuff, int range, string filename) : base(filename)
{
InitParams(stuff, range)
}
public SpecialImage(Thing stuff, int range, TDepth[,,] data) : base(data)
{
InitParams(stuff, range)
}
private void InitParams(Thing stuff, int range)
{
_stuff = stuff;
_range = range;
}
}
Questo è un po 'ripetitivo, che è solo un vero problema di manutenzione. Ogni volta che i requisiti di costruzione di SpecialImage
cambiano, ho 5 costruttori da modificare.
Sicuramente sento come se dovessi ripetermi di meno, ma non so come rimuovere questo tipo di ridondanza. È possibile renderlo meno ridondante?