定义

抽象工厂是OOP的体现,抽象出行为(接口),面向接口编程

现实

汽车厂的冲压设备,冲压前车门,后车门只需要修改冲压设备的冲头(前车门冲压头,后车门冲压头),只需修改配置,调出对应的冲头

例子

AbstractFactory:抽象工厂类

ISpeak:speak方法,说明是能说的对象

Chinese:说中国话

    public class AbstractFactory
    {
        /// <summary>
        /// 获取能说话的对象
        /// </summary>
        /// <returns></returns>
        public static ISpeak GetCanSpeakObject()
        {
           var speakTypeName= ConfigurationManager.AppSettings.Get("type");
           var speakType=  Type.GetType(speakTypeName);
            var assembly = Assembly.GetCallingAssembly();
            return (ISpeak)assembly.CreateInstance("大话设计模式.American");
        }
    }
namespace 大话设计模式
{
    public interface ISpeak
    {
        string Speak();
    }
}
namespace 大话设计模式
{
    public class American : ISpeak
    {
        public string Speak()
        {
            return "我说英语!";
        }
    }
}
namespace 大话设计模式
{
    public class Chinese : ISpeak
    {
        public string Speak()
        {
            return "我说中国话!";
        }
    }
}
namespace 大话设计模式
{
    public class Japanese : ISpeak
    {
        public string Speak()
        {
            return "亚美爹!";
        }
    }
}

如果现在这个系统给中国用就实现Chinese对象,以次类推

工厂类:通过读取配置文件,实例化对应的实体对象。