软件设计模式
实验三 工厂方法设计模式
实验目的:加深对工厂方法设计模式及创建型设计模式原理的理解
实验环境:C#.Net
实验内容:
某系统日志记录器要求支持多种日志记录方式,如文件日志记录和到数据库日志记录
等,且用户在应用场景下可以根据要求动态选择日志记录方式,现使用工厂方法设计模式设
计该系统。
实验过程:
1、构建实现场景,画出 UML 类图
2、实现代码(C#)
static void Main(string [] args)
{
Console .WriteLine("采用文件日志记录方式");
ILogFactory fileLogFactory = new
FileLogFactory();
Log filelog = fileLogFactory .CreateLog();
软件设计模式
filelog .write();
Console .WriteLine("==============================")
;
Console .WriteLine("采用数据库日志记录方式");
ILogFactory databaseLogFactory = new
DatabaseLogFactory();
Log databaseLog =
databaseLogFactory .CreateLog();
databaseLog .write();
}
///
/// 日志抽象类
///
public abstract class Log
{
public abstract void write();
}
///
/// 文件日志类
软件设计模式
///
public class FileLog :Log
{
public override void write()
{
Console .WriteLine("正在向文件日志中写入数
据......");
}
}
///
/// 数据库日志类
///
public class DatabaseLog :Log
{
public override void write()
{
Console .WriteLine("正在向数据库日志中写入数
据......");
}
}
///
软件设计模式
/// 抽象日志工厂
///
interface ILogFactory
{
Log CreateLog();
}
///
/// 文件日志型工厂
///
public class FileLogFactory :ILogFactory
{
public Log CreateLog()
{
return new FileLog();
}
}
///
/// 数据库日志型工厂
///
public class DatabaseLogFactory :ILogFactory
{
软件设计模式
public Log CreateLog()
{
return new DatabaseLog();
}
}
实验结果:
实验讨论(效果分析):
通过这次实验,加深了对创建型设计模式的理解,并对几种模式进行比较,发现各种模式的
特点:工厂方法模式中,核心的工厂类不是负责所有产品的创建,而是将具体的创建工作交
给子类,工厂模式中,子工厂与产品类往往具有平行的等级结构,他们之间一一对应。
选折某个设计模式有了比较深的理解,这次实验,同时也是上次实验课学习的进一步应用,
体现开闭原则(要求对软件的拓展开放)和里氏替换原则。