定义
抽象工厂是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对象,以次类推
工厂类:通过读取配置文件,实例化对应的实体对象。