工厂方法设计模式

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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();

}

}

实验结果:

实验讨论(效果分析):

通过这次实验,加深了对创建型设计模式的理解,并对几种模式进行比较,发现各种模式的特点:工厂方法模式中,核心的工厂类不是负责所有产品的创建,而是将具体的创建工作交给子类,工厂模式中,子工厂与产品类往往具有平行的等级结构,他们之间一一对应。

选折某个设计模式有了比较深的理解,这次实验,同时也是上次实验课学习的进一步应用,体现开闭原则(要求对软件的拓展开放)和里氏替换原则。

相关文档
最新文档