工厂方法模式实现多功能日志记录
有时,我们在开发的时候,会遇到一些关于日志记录的功能。并且,它们可能是独立于系统业务逻辑的,那么我们就可以将日志做成组件的形式,以方便复用。
以下采用工厂方法模式,来实现日志组件的设计,并保证对功能的扩展不会改变已有的实现。
我们实现三种日志记录类型:错误日志记录、按钮点击日志记录、操作日志记录。
首先,我们创建一个“抽象工厂”【其实是各实例工厂都必须实现的Log接口】,既然是日志记录,那么就需要有日志的实体了。也就是LogEntity,它是一个“抽象实体”,因为不同类型的日志,需要不同的日志实体,所以这里采用LogEntity作为抽象实体,来派生出各具体类型的日志实体。
实现如下:
以下是各个实例工厂、和日志实体,实现各自的日志记录逻辑:
在客户端调用的时候,你需要先new 一个你需要的具体的日志实体,然后设置它的属性,比如:
OperatingEntity entity=new OperatingEntity();
//set Property
entity.OperatingTime=DateTime.Now;
.....
然后提供你的实例工厂:
ILogFactory factory=new OperatingFactory();
factory.Log(entity);
扩展的时候,你需要构建你新的日志实体类和新的实例工厂,来实现你的记录逻辑。
原有的实现都无需改动。