public class AbstractFactory<I>
{
public static I GetInstance(string nameSpace, string className)
{
Assembly a = Assembly.Load(nameSpace);
I t = (I)a.CreateInstance(nameSpace + "." + className);
return t;
}
}
public interface IAnimal
{
string Shout();
}
class Cattle : IAnimal
{
public string Shout()
{
return "哞";
}
}
public class Sheep : IAnimal
{
public string Shout()
{
return "咩";
}
}
IAnimal sheep = AbstractFactory<IAnimal>.GetInstance("ConsoleApplication1", "Sheep");
Console.WriteLine(sheep.Shout());
IAnimal cattle = AbstractFactory<IAnimal>.GetInstance("ConsoleApplication1", "Cattle");
Console.WriteLine(cattle.Shout());