Ich habe die oben wie folgt gesetzt werden folgende Klassen:Vererbung und Funktionen mit unterschiedlichen Rückgabetypen
class Test
{
public virtual subSmallObject CreateSmallObject
{
return new subSmallObject();
}
}
abstract class subSmallObject
{ string test; }
class subSmallObjectA : subSmallObject
{ string testA; }
class subSmallObjectB : subSmallObject
{ string testB; }
Statt nun überall-Test-Klasse, ich brauche eine abgeleitete Klasse von Test zu verwenden, nennen wir sie Klasse TestA und TestB. Für Test A und B muss die CreateSmallObject-Klasse entweder subSmallObjectA oder SubSmallObjectB zurückgeben.
So Regel konnte ich nur
class TestA : Test
{
override subSmallObject CreateSmallObject()
{
return new subSmallObjectA();
}
}
class TestB : Test
{
override subSmallObject CreateSmallObject()
{
return new subSmallObjectB();
}
}
Aber das Problem ist, dass ich dann nicht die subSmallObject Rückkehr von denen zu subSmallObjectA oder subSmallObjectB werfen kann, aufgrund tot er Anforderungen der Aufgabe in der Hand (es wäre break viele Dinge, die ich nicht kontrollieren kann. Diese Dinge erwarten entweder smallSubObjectA oder subSmallObjectB). Es wird gemeinsame Elemente zwischen SubSmallObjectA und SubSmallObjectB geben. Ich möchte die virtuelle Funktion nicht eliminieren, da einige Codes bei zwei verschiedenen Methoden wiederholt werden.
Gibt es irgendein Muster oder irgendeine Übung, die ich vermisse? Ich bin ein bisschen verloren in diesem und solche architektonischen Veränderungen sind jenseits meiner, da ich nicht wirklich den "richtigen" Weg kenne, dies zu tun.