概述
在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时由于需求的变化,往往存在着更多系列对象的创建工作。如何应对这种变化?如何绕过常规的对象的创建方法(new),提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧耦合?这就是我们要说的抽象工厂模式。
简而言之: 通过传入"类名", 创建不同的对象.
意图
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
类: CAdmin(管理员类), CUser(普通用户类)
接口: IUser(用户类)
关系: CAdmin(管理员类), CUser(用户类) 都实现 IUser接口
类: CAdmin(管理员类)
namespace WebApplication1 { public class CAdmin:IUser { #region IUser 成员 public string GetName() { return "我是管理员, 小样敢乱发言逮捕!"; } #endregion } }
类: CUser(普通用户类)
namespace WebApplication1 { public class CUser:IUser { #region IUser 成员 public string GetName() { return "我是普通用户!"; } #endregion } }
接口: IUser(用户类)
namespace WebApplication1 { interface IUser { string GetName(); } }
调用(实现部分):
//用户对象 protected void Button1_Click(object sender, EventArgs e) { Label1.Text = GetName("WebApplication1.CUser"); } //管理员对象 protected void Button2_Click(object sender, EventArgs e) { Label2.Text = GetName("WebApplication1.CAdmin"); } //得到名字, 当然还有简短的话 - - public string GetName(string className) { IUser user = (IUser)Assembly.Load("WebApplication1").CreateInstance(className); return user.GetName(); }
来源:https://www.cnblogs.com/henw/archive/2011/09/26/2192020.html