工厂方法模式实现多功能日志记录

有时,我们在开发的时候,会遇到一些关于日志记录的功能。并且,它们可能是独立于系统业务逻辑的,那么我们就可以将日志做成组件的形式,以方便复用。

以下采用工厂方法模式,来实现日志组件的设计,并保证对功能的扩展不会改变已有的实现。

我们实现三种日志记录类型:错误日志记录、按钮点击日志记录、操作日志记录。

首先,我们创建一个“抽象工厂”【其实是各实例工厂都必须实现的Log接口】,既然是日志记录,那么就需要有日志的实体了。也就是LogEntity,它是一个“抽象实体”,因为不同类型的日志,需要不同的日志实体,所以这里采用LogEntity作为抽象实体,来派生出各具体类型的日志实体。

实现如下:



以下是各个实例工厂、和日志实体,实现各自的日志记录逻辑:







在客户端调用的时候,你需要先new 一个你需要的具体的日志实体,然后设置它的属性,比如:

OperatingEntity entity=new OperatingEntity();

//set Property

entity.OperatingTime=DateTime.Now;

.....

然后提供你的实例工厂:

ILogFactory factory=new OperatingFactory();

factory.Log(entity);


扩展的时候,你需要构建你新的日志实体类和新的实例工厂,来实现你的记录逻辑。

原有的实现都无需改动。


posted @ 2011-07-24 23:28  程序员天下  阅读(715)  评论(0编辑  收藏  举报