IT学习站-137zw.com

more +资源更新Forums

more +随机图赏Gallery

李梦娇2020年《公共基础知识》事业尊享套餐李梦娇2020年《公共基础知识》事业尊享套餐
马哥Linux高端运维云计算就业班 强烈推荐马哥Linux高端运维云计算就业班 强烈推荐
Flutter视频教程_Flutter仿京东商城项目实战视频教程Flutter视频教程_Flutter仿京东商城项目实战视频教程
实战Gradle3自动化项目构建技术精讲视频教程 百度云实战Gradle3自动化项目构建技术精讲视频教程 百度云
雅思7分旗舰VIP全程班 主讲:韩悦娇、赵楠等 完整版课程雅思7分旗舰VIP全程班 主讲:韩悦娇、赵楠等 完整版课程
剑指Java面试-Offer直通车 相当完美课程剑指Java面试-Offer直通车 相当完美课程

错误日志之观察者模式

错误日志之观察者模式

[复制链接]
杨柳657 | 显示全部楼层 发表于: 2019-11-14 08:45:00
杨柳657 发表于: 2019-11-14 08:45:00 | 显示全部楼层 |阅读模式
查看: 103|回复: 0
星期一

情景

早晨,项目组长来到小明身边,“有人反映咱们的项目有Bug” “什么Bug?” “不知道,你添加一个日志模块自己看记录去。” ”...“
分析

在MVC全局过滤器中自己添加有异常过滤器。
Global.asax
View Code
FilterConfig.cs
View Code
开工

整理思路:发生错误时要执行自己需要的代码,只需要继承IExceptionFilter,重写OnException方法,然后把自己的过滤器注册到全局即可。
创建过滤器,MyExceptionFilter类

LogHelper类,用来把错误写到日志里面去
View Code
把自己的过滤器注册到全局
View Code
自定义错误测试
View Code

OK,大功告成,以后就可以根据日志来找错误了。
星期二

情景

早晨,项目组长又来到小明身边,”昨天我用了你的错误日志功能,还不错,但是你将日志写在文件中整理不是太方便,还存在共享冲突问题,你改下写到数据库中“ ”...“
分析

查看昨天写的代码

发现此处是一个变化点,有可能写到文件中,有可能写到数据库中,有可能......
不就是写到不同的地方么,简单,多态就能搞定了。
开工

依赖于抽象,而不依赖于具体
创建IWriteLog接口
View Code创建WriteLogToText类实现接口,用来写入文本
View Code 创建WriteLogToSqlServer类实现接口,用来写入数据库
View Code
对变化点进行修改OK,大功告成,又可以去美滋滋了...
星期三

情景

早晨,项目组长再一次来到小明身边,”经过我的思考,我觉得把错误信息同时写到文本和数据库中比较好“ ”为什么?“ “需求” “...”
分析


错误信息有可能要写到不同的地方,而且不知道有多少地方,说不定明天又加了一个Redis、后天再加一个....
这时候我们可以考虑创建一个集合来保存都需要写到那些地方去。(这里插一句:设计模式只是一种思想,实现方式肯定是不唯一的,但是思想是精髓,不能说这个代码是这个模式,换一种方式实现就不是这个模式了。
然后依次写入即可。
开工

对LogHelper进行修改后期如果还需要写入其它地方或者去掉一个的话,只需要Add一个或者删除一行即可。当然,现在的代码还有很多可优化的地方,比如把通知者(LogHelper)进行抽象,还可以通过配置文件加反射再次解耦。这里就不做过多介绍了。因为已经星期四了...
星期四

采用Log4Net
总结

观察者模式又叫发布-订阅模式,定义了一种一对多的依赖关系,让多个观察者同时监听同一个对象。当对象状态发生改变时,通知所订阅的观察者。
什么时候使用?
当一个对象改变同时需要改变其他对象,并且还不知道要改变多少对象。这时应该考虑观察者模式。


来源:http://www.137zw.com
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
137zw.com IT学习站致力于免费提供精品的java技术教程和python技术教程,CCNA书籍/资料/CCNP书籍/资料教程/CCIE书籍/资料/H3C学习/认证/一级建造师考试/微软学习/认证/包括基础教程和高级实战教程,同时也提供分享网站源码下载和互联网相关一系列的技术教程,我们想做的就是让知识分享更有价值!(IT学习站官方唯一域名地址:www.137zw.com 请谨防假冒网站!)本站所有资源全部收集于互联网或网友自行分享,分享目的仅供大家学习与参考,如无意中侵犯您的合法权益,请联系本站管理员进行删除处理!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

浙ICP备19022368号-1|Archiver|手机版|IT学习站-137zw.com

GMT+8, 2020-9-20 23:06 , Processed in 0.178630 second(s), 26 queries .

快速回复 返回顶部 返回列表