Dynamicznie dodaje i zastępuje formanty w panelu WinForm w środowisku wykonawczymW jaki sposób można zastąpić dziedziczenie interfejsami w fabrycznym wzorze?
Mimo że wszystkie prace kazano mi implementować interfejsy zamiast dziedziczenia z baseUserControl.
Jestem wszystkim za to, ale ja nie widzę w jaki sposób można to osiągnąć ten sam efekt przy użyciu interfejsów
Jak bym kodować moja fabryka?
Jak można to poprawić i zamiast tego korzystać z interfejsów?
//Simplified noddy example
//Client code
var controlA = ControlFactory
.Create("UserControlA") as UserControlA;
panel1.Controls.Add(ControlA);
//Factory
public class ControlFactory
{
public static BaseUserControl Create(string name)
{
switch (name)
{
case "UserControlA":
var userControlA = new UserControlA();
return userControlA;
case "UserControlB":
var userControlB = new UserControlB();
return userControlB;
}
return null;
}
}
//BaseUserControl
public partial class BaseUserControl : UserControl
{
public BaseUserControl()
{
InitializeComponent();
}
public virtual void DoSomething()
{
}
}
public partial class UserControlA : BaseUserControl
{
public UserControlA()
{
InitializeComponent();
}
public override void DoSomething()
{
//Do something here
}
}
public partial class UserControlB : BaseUserControl
{
public UserControlB()
{
InitializeComponent();
}
public override void DoSomething()
{
//Do something here
}
}
wygląda jak pytanie o http://codereview.stackexchange.com/ – GolfWolf
Dlaczego? Jaka byłaby korzyść z używania interfejsów w klasie bazowej? – Oded
Nie są to wyłączne. Twój IUserControl może zadeklarować DoSomething() i możesz zaimplementować BaseControl jako implementację IUserControl (i zwrócić IUserControl z fabryki). – Joe