Al momento sto lavorando a un progetto con diverse istanze di abstract class
. Alcune funzioni nelle sottoclassi sono le stesse, altre no. Questo porterebbe al codice come il seguente. Nel codice uso l'oggetto come parametro, ma nel progetto reale è una classe definita e non oggetto .
public abstract class BaseClass
{
protected BaseClass Next;
public abstract void foo(object SomeParameters);
protected virtual void bar1()
{
object SomeParameters = this.GetMyParameters();
foo();
bar2();
}
public virtual void bar2()
{
if (this.Next!= null)
{
this.Next.bar2();
}
}
}
//==============================
//==============================
public class Child1 : BaseClass
{
override public void foo(object SomeParameters)
{
...
}
}
public class Child2 : BaseClass
{
override public void foo(object SomeParameters)
{
//some code
}
override public void bar2()
{
this.DoSomething();
base.bar2();
}
private void DoSomething()
{
//some other code
}
}
public class Child3 : BaseClass
{
override public void foo(object SomeParameters)
{
...
}
override public void bar1()
{
object SomeParameters = this.GetMyParameters();
foo();
Between();
bar2();
}
private void Between();
{
//Code between foo and bar2
}
}
I miei dubbi sono la leggibilità del codice, perché stiamo parlando di qualcosa come 15 sottoclassi. L'altro modo di aggirare sarebbe codificare le cose due o più volte, una violazione del principio ASCIUTTO. C'è qualche soluzione / Pattern che mi è mancato per liberarmi di questo paradosso?
Saluti Noran