疯子在思考之-从日志想到的软件架构
谈到架构是一个很泛的话题
这里我们讨论一下兼容性与扩展性
我们为什么用接口?这是很多java程序员都会问过的问题
我的答案是为了扩展和兼容
最近的框架中想加入日志功能,想自己写一个简单的日志操作类
其实我们最常用的应该是log4j
但jcp标准是java.util.logger 这两个东西完全不兼容,网上有很多说明了原因。有兴趣的同学可以去网上查一查。
其实日志随便用什么框架或者自己写都是可以的,为什么还要如此纠结呢?
这里我纠结的不是功能实现,而是其中的思想。
我怎么才能做一个可扩展的日志框架?
jcp的标准并不是实际上的标准,就象osi和tcp/ip一样,理论上的与工业上实际标准并不一样。
社区的log4j已经很多年了,而java官方并没有去兼容。
最近发现
log4j 的作者 Ceki Gülcü 出来了一标准SLF4J并做了一个实现框架logback.
这个框架应该也很久了,可惜我最近在工作中才发现。
这里领悟到一个思想,当官方标准不被承认,很多框架百花齐放的时侯,我们为了扩展,其实可以定义一个自己的标准,通过实现对需要用到的框架做兼容。
这样就会避免直接引用某一个框架的对象(这里比如说是log4j),当对这个框架进行替换时需要修改所有的引用,可能是成千上万的。
随便推荐一下,我的框架的实践性项目上线了
http://www.zhuaququ.com
这里我们讨论一下兼容性与扩展性
我们为什么用接口?这是很多java程序员都会问过的问题
我的答案是为了扩展和兼容
最近的框架中想加入日志功能,想自己写一个简单的日志操作类
其实我们最常用的应该是log4j
但jcp标准是java.util.logger 这两个东西完全不兼容,网上有很多说明了原因。有兴趣的同学可以去网上查一查。
其实日志随便用什么框架或者自己写都是可以的,为什么还要如此纠结呢?
这里我纠结的不是功能实现,而是其中的思想。
我怎么才能做一个可扩展的日志框架?
jcp的标准并不是实际上的标准,就象osi和tcp/ip一样,理论上的与工业上实际标准并不一样。
社区的log4j已经很多年了,而java官方并没有去兼容。
最近发现
log4j 的作者 Ceki Gülcü 出来了一标准SLF4J并做了一个实现框架logback.
这个框架应该也很久了,可惜我最近在工作中才发现。
这里领悟到一个思想,当官方标准不被承认,很多框架百花齐放的时侯,我们为了扩展,其实可以定义一个自己的标准,通过实现对需要用到的框架做兼容。
这样就会避免直接引用某一个框架的对象(这里比如说是log4j),当对这个框架进行替换时需要修改所有的引用,可能是成千上万的。
随便推荐一下,我的框架的实践性项目上线了
http://www.zhuaququ.com