工厂方法设计模式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三工厂方法设计模式
实验目的:加深对工厂方法设计模式及创建型设计模式原理的理解
实验环境: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();
}
}
实验结果:
实验讨论(效果分析):
通过这次实验,加深了对创建型设计模式的理解,并对几种模式进行比较,发现各种模式的特点:工厂方法模式中,核心的工厂类不是负责所有产品的创建,而是将具体的创建工作交给子类,工厂模式中,子工厂与产品类往往具有平行的等级结构,他们之间一一对应。
选折某个设计模式有了比较深的理解,这次实验,同时也是上次实验课学习的进一步应用,体现开闭原则(要求对软件的拓展开放)和里氏替换原则。