zoukankan      html  css  js  c++  java
  • 抽象工场

    抽象工场一般都是用反射获取配置文件想要切换的目标(概念不多说,网上一大堆重复概念),本例中用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="ORACLE"/>
      </appSettings>
    </configuration>
  • 相关阅读:
    sourceTree和eclipse 的使用
    oracle习题练习
    oracle详解
    单例模式
    反射详解
    Oracle 存储过程判断语句正确写法和时间查询方法
    MVC4 Jqgrid设计与实现
    遇到不支持的 Oracle 数据类型 USERDEFINED
    ArcGIS Server10.1 动态图层服务
    VS2010连接Oracle配置
  • 原文地址:https://www.cnblogs.com/objectboy/p/3857391.html
Copyright © 2011-2022 走看看