之前的讲过两篇关于日志组件的文章,分别是《第一回 日志记录组件之自主的Vlog》和《第三回 日志记录组件之log4net》,而今天主要说一下我自己开发的另一种日志组件Logger.Core,它也属于面试AOP(横切关注点)的一部分,这个组件对于一些想学习设计模式的同学来说,无疑是一个大餐!Logger.Core项目里内含了策略模式,模版方法模式,工厂模式和单例模式,可以说,最常用的模式都用到了,而它们在这个项目里都起到了什么作用,什么时候用到它们呢,这些答案相信在看完我的文章之后,您会有一个明确的答案的。
一 面向接口编程与多态
面向接口编程,是实现软件解耦的灵魂,也是实现多态的方法之一,日志项目有统一的接口规范
![](https://i-blog.csdnimg.cn/blog_migrate/cdec0645add3fc3c328197dda5c76203.gif)
二 继承与面向对象
继承是面向对象的三大特性之一,有了它,面向对象才有了层次感,将公共的功能点从各个派生类抽出,提取到基类中
![](https://i-blog.csdnimg.cn/blog_migrate/cdec0645add3fc3c328197dda5c76203.gif)
三 模版方式模式规定具体流程,抽象个性化方法
对于个性化的操作声明为抽象方法,在基类中实现统一的操作流程,在各个派生类中去实现个性化的模块,这正是模版方式模式的体现
四 策略模式以多种方式实现某个功能
对于文件持久化的方式有很多,而你可以分别去实现它,不知不觉中,我们正在使用策略模式来开发应用程序
普通持久化
![](https://i-blog.csdnimg.cn/blog_migrate/cdec0645add3fc3c328197dda5c76203.gif)
log4net实现日志分级的持久化
![](https://i-blog.csdnimg.cn/blog_migrate/cdec0645add3fc3c328197dda5c76203.gif)
五 工厂模式动态生产对象,单例模式保持对象实例的唯一性
当我们以多种方式实现了对日志的持久化后,我们可以通过工厂模式动态的在这些持久化方式之间实现切换,对象实现单例之后,减少了内存开销,使对象的属性成为了全局性属性!
![](https://i-blog.csdnimg.cn/blog_migrate/cdec0645add3fc3c328197dda5c76203.gif)
最后有一句话送给大家:坚持,其实就是一种胜利!
本文转自博客园张占岭(仓储大叔)的博客,原文链接:我心中的核心组件(可插拔的AOP)~第十五回 我的日志组件Logger.Core(策略,模版方法,工厂,单例等模式的使用),如需转载请自行联系原博主。