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

Posted LBO.net

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式之工厂方法配置文件与反射相关的知识,希望对你有一定的参考价值。

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>

 

以上是关于设计模式之工厂方法配置文件与反射的主要内容,如果未能解决你的问题,请参考以下文章

设计模式-简单工厂

就不能换DB吗? 抽象工厂模式

通过配置文件,反射,工厂模式实现IOC控制反转

工厂模式 ioc dom4j 反射之我的一点理解

笔记之_java整理设计模式

Java开发Spring之IOC详解第一篇(xml开发常用APIben标签DI依赖注入)