设计模式之工厂方法配置文件与反射
2017-07-11 13:20
627 查看
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(); /*总结: * (1)新增的日志记录器需要继承抽象日志器类Logger * (2)增加一个新的具体日志记录器工厂,继承抽象日志记录器工厂类LoggerFactory * --并实现其中工厂方法CreateLogger(),返回具体的日志记录器对象 * (3)修改配置文件App.config,以新增具体的日志记录器工厂类的类名字符串替换原有的工厂类名字符串 * (4)编译运行--使用新的日志记录器方式,而原有的类库代码无须做任何修改,完全符合开闭原则 * 待续 */ } } /// <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>
相关文章推荐
- 反射机制与配置文件结合的工厂设计模式
- 设计模式之1.1 再谈反射 以及java当中通过配置文件得到类名字,并生成对象的方法
- 设计模式学习之简单工厂+反射+配置文件
- Java反射 配置文件 工厂方法综合实例
- 基于配置文件的工厂设计模式实现,并且做到对象的单例,类似于spring的ioc
- 【设计模式】反射+配置文件
- 设计模式之反射与配置文件
- 厂方法模式(三):日志记录器的工厂方法模式解决方案,反射与配置文件
- 设计模式实践-反射到所有接口实现类实践工厂方法,页面中有大量计算数据时设计实践
- (设计模式)简单工厂模式之通过配置文件动态创建实现类
- 设计模式之反射与配置文件
- 设计模式之反射与配置文件
- [Java 15 反射机制 ] 工厂模式与 properties 读取配置文件
- 工厂方法+配置文件+反射
- 设计模式之反射与配置文件
- 设计模式学习之抽象工厂模式(二)<反射+配置文件>
- 设计模式之工厂方法
- 设计模式:简单工厂、工厂方法、抽象工厂之小结与区别
- 设计模式(2):工厂方法模式
- 扩展无极限:工厂设计模式与C#扩展方法的结合使用