Inizialmente ho iniziato un progetto con Facades and Polymorphism come modo per creare un design semplice ed estensibile seguendo Principi SOLID . Ecco un codice di esempio:
public interface IInterface
{
void FillList(List<InputPocoObject> listOfInputObjects, out List<OutputPocoObject> ListOfOutputObjects);
}
public class SampleClass : IInterface
{
public void FillList(List<InputPocoObject> listOfInputObjects, out List<OutputPocoObject> ListOfOutputObjects)
{
//some data layer code
//and a for loop to fill OutputPocoObject object and add it to list
}
}
Ho un numero di classi come sopra che sono create in runtime con l'aiuto di factory (non mostrato qui per semplicità)
Recentemente dopo un paio di mesi vedo che ci sono diverse esigenze emergenti nel mio progetto, che ho tentato di risolvere con l'aiuto di Polymorphism e vedo che sono bloccato a violare DRY .
Ecco un esempio di codice di questa situazione:
public class SampleClass2 : IInterface
{
public void FillList(List<InputPocoObject> listOfInputObjects, out List<OutputPocoObject> ListOfOutputObjects)
{
//some data layer code
//and a for loop to fill OutputPocoObject object and add it to list
// there is a property in OutputPocoObject which is set to 1
}
}
public class SampleClass3 : IInterface
{
public void FillList(List<InputPocoObject> listOfInputObjects, out List<OutputPocoObject> ListOfOutputObjects)
{
//same code as above
//with only one difference that property in OutputPocoObject is set to 5 here
}
}
Una soluzione semplice sarà aggiungere un parametro di controllo all'interfaccia come:
public interface IInterface
{
void FillList(List<InputPocoObject> listOfInputObjects, out List<OutputPocoObject> ListOfOutputObjects, int controlParameter);
}
ma non so se sia un'idea così migliore? O se potrebbe introdurre qualche complessità nella mia progettazione?