首页 > 代码库 > 抽象工场
抽象工场
抽象工场一般都是用反射获取配置文件想要切换的目标(概念不多说,网上一大堆重复概念),本例中用Factory类来实现(以目标数据库为例):
1,首先定义共用接口(各种目标类都要实现的)
interface IDB { void DataBase(); }
2,实现类(目标实现类都继承共用接口):
class MSSQL : IDB { public void DataBase() { Console.Write("MSSQL"); } }
class ORACLE:IDB { public void DataBase() { Console.Write("ORACLE"); } }
3,Factory类
class Factory { public static IDB CreateDb() { var assemblyName = Assembly.GetExecutingAssembly().GetName().Name; //程序集名 var db = ConfigurationManager.AppSettings["DB"]; var className = assemblyName + "." + db; //类名 return (IDB)Assembly.Load(assemblyName).CreateInstance(className); } }//(IDB)Assembly.Load("程序集名称").CreateInstance("命名空间.类名称");
4,客服端:
class Program { static void Main(string[] args) { IDB db = Factory.CreateDb(); db.DataBase(); Console.Read(); } }
5,一般抽象工场都是用app.config或者是web.config文件来切换目标的
<?xml version="1.0" encoding="utf-8" ?><configuration> <appSettings> <add key="DB" value="http://www.mamicode.com/ORACLE"/> </appSettings></configuration>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。