首页 > 代码库 > 设计模式之工厂方法配置文件与反射

设计模式之工厂方法配置文件与反射

using System;using System.Collections.Generic;using System.Configuration;using System.Linq;using System.Text;using System.Configuration;using System.Reflection;//导入命名空间(记得在解决方案资源管理器里的“引用”中添加“System.Configuration”)//工厂方法模式实例--配置文件与反射namespace Factory_event{    class Program    {        static void Main(string[] args)        {            Console.WriteLine("工厂方法模式实例--配置文件与反射:");            LoggerFactory factory;//针对抽象工厂类编程            Logger logger;        //针对抽象产品类编程            //读取配置文件            string factoryString = ConfigurationManager.AppSettings["factory"];            //反射生成对象            factory = (LoggerFactory)Assembly.Load("Factory_event").CreateInstance(factoryString);            logger = factory.CreateLogger();            logger.WriteLog();            Console.Read();            /*总结:             * 待续             */        }    }    /// <summary>    /// 日志记录接口,充当抽象产品角色    /// </summary>    internal interface Logger    {        void WriteLog();    }    /// <summary>    /// 数据库日志记录器,充当具体产品角色    /// </summary>    class DatabaseLogger : Logger    {        public void WriteLog()        {            Console.WriteLine("数据库记录日志");        }    }    /// <summary>    /// 文件日志记录器,充当具体产品角色    /// </summary>    class FileLogger : Logger    {        public void WriteLog()        {            Console.WriteLine("文件日志记录");        }    }    /// <summary>    /// 日志记录器工厂接口    /// </summary>    internal interface LoggerFactory    {        Logger CreateLogger();//抽象工厂方法    }    /// <summary>    /// 数据库日志记录器工厂类,充当具体工厂角色    /// </summary>    class DatabaseLoggerFactory : LoggerFactory    {        public Logger CreateLogger()        {            //连接数据库            //创建数据库日志记录对象            Logger logger = new DatabaseLogger();            //初始化数据库日志记录器            return logger;        }    }    /// <summary>    /// 文件日志记录器工厂类,充当具体工厂角色    /// </summary>    class FileLoggerFactory : LoggerFactory    {        public Logger CreateLogger()        {            //创建日志记录器对象            Logger logger = new FileLogger();            //创建文件            //...            return logger;        }    }}

App.config:

<?xml version="1.0" encoding="utf-8" ?><configuration>  <appSettings>    <add key="factory" value="Factory_event.FileLoggerFactory"/>   </appSettings></configuration>

 

设计模式之工厂方法配置文件与反射