您的位置:首页 > 编程语言 > C#

C#设计模式之工厂方法模式

2017-07-10 12:53 459 查看
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

//工厂方法模式实例
namespace Factory_event
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("工厂方法模式实例:");
LoggerFactory factory;
Logger logger;
factory = new FileLoggerFactory();//可引入配置文件实现
logger = factory.CreateLogger();
logger.WriteLog();//结果:文件日志记录
//
factory = new DatabaseLoggerFactory();
logger = factory.CreateLogger();
logger.WriteLog();//结果:数据库日志记录
Console.Read();
/*总结:
* 1.如果需要更换日志记录器,则只需要修改客户端代码中具体工厂类的类名即可.
* 2.如果需要添加并使用新的日志记录器,只需要对应增加一个新的具体工厂类,
* --再在客户端代码中修改具体工厂类类名,原有类库代码无须做任何修改.
* 可配置:可通过引入配置文件并使用反射机制,可实现在不修改客户端代码的基础上更换具体工厂类
*/
}
}

/// <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;
}
}

}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: