Bitte beachten Sie den Code:Implementierung von Factory-Methode in verwandten Klassenhierarchien
class X
{
public string x;
}
class Y : X
{
public string y;
}
class A
{
string a;
public virtual X createX<T>()
where T : X, new()
{
return new T() { x = a };
}
}
class B : A
{
string b;
public override X createX<T>()
{
var x = base.createX<T>();
if (x is Y)
((Y)x).y = b; // Yak.
return y;
}
}
...
var c = new B();
var z = c.createX<Y>(); // Yak. I prefer to not needing to know the type Y
ich diesen Code nicht mag, versuchen, mit dem besseren Weg zu kommen, um es zu Refactoring. Die allgemeine Idee ist ziemlich einfach, jede Klasse der Hierarchie hat eine Factory-Methode, um eine Instanz der Gegenstückklasse der Spiegelhierarchie zu erzeugen. Ich erhalte eine Instanz der Stammklasse oder der abgeleiteten Klasse und muss die Instanz der Gegenstückklasse oder ihre Ableitung (als Root-Gegenstückklasse) zurückgeben. Irgendwelche Ideen oder Entwurfsmuster, die ich stattdessen implementieren kann?
[codereview] (http://codereview.stackexchange.com/)? –
@ S.Akbari Wie verschiebe ich die Frage in den Codereview? –
Melden Sie sich einfach an und posten Sie Ihre Frage. –