工厂方法模式是一种常用的设计模式,它定义了一个创建对象的接口,但让实现这个接口的类来决定实例化哪一个类。工厂方法模式使得一个类的实例化延迟到其子类。本文将通过一个简单的日志记录框架示例,展示如何使用工厂方法模式来创建对象。
在面向对象编程中,经常需要创建对象。但是,直接使用new关键字创建对象可能会导致代码的耦合度增加。为了解决这个问题,可以使用工厂方法模式。工厂方法模式允许通过一个公共接口来创建对象,而不需要知道具体的实现类。这样,就可以在不修改现有代码的情况下,增加新的实现类。
首先,需要定义一个日志记录的接口,然后实现这个接口的两个具体类。为了演示,将使用一个简单的字符串返回作为日志记录的实现。
namespace LoggerClassLibrary
{
public interface ILogger
{
string Log();
}
}
接下来,定义两个具体的日志记录类:
namespace LoggerClassLibrary.ConcreteLoggers
{
internal class SqlLogger : ILogger
{
public string Log()
{
return "Logging to SQL";
}
}
}
namespace LoggerClassLibrary.ConcreteLoggers
{
internal class DiskLogger : ILogger
{
public string Log()
{
return "Logging to Disk";
}
}
}
为了使用工厂方法模式,需要定义一个创建日志记录对象的接口:
public interface ILoggerCreator
{
ILogger CreateLogger();
}
然后,定义两个具体的创建类:
public class DiskLoggerCreator : ILoggerCreator
{
public ILogger CreateLogger()
{
return new DiskLogger();
}
}
public class SqlLoggerCreator : ILoggerCreator
{
public ILogger CreateLogger()
{
return new SqlLogger();
}
}
最后,可以使用这些创建类来创建日志记录对象:
public void Log(ILoggerCreator creator)
{
ILogger logger = creator.CreateLogger();
Console.WriteLine(logger.Log());
}
通过这种方式,成功地实现了工厂方法模式,并且可以轻松地添加新的日志记录实现类。