Abstract Factory provide common interface for a group of similar classes, without creating concrete class.
…
public interface IClass{
public string GetMethodResult();
}
public class ClassA : IClass{
public string GetMethodResult(){
return "Result from Class A";
}
}
public class ClassB : IClass {
public string GetMethodResult(){
return "Result from Class B";
}
}
public interface IFactory{
public IClass CreateClass();
}
public class ClassFactoryA : IFactory{
public IClass CreateClass(){
return new ClassA();
}
}
public class ClassFactoryB : IFactory {
public IClass CreateClass(){
return new ClassB();
}
}
public enum ClassType {
Class_A, Class_B
}
void Main{
IFactory factory;
switch(type){
case type.Class_A:
factory = new ClassFactoryA();
case type.Class_B:
factory = new ClassFactoryB();
}
var aClass = factory.CreateClass();
var result = aClass.GetMethodResult();
}