当前位置: 首页 > news >正文

网站开发的开发意义太原网站建

网站开发的开发意义,太原网站建,如和建立网站,网站建设开发步骤图解mybatis日志模块之设计模式 概述 最近经常在思考研发工程师初、中、高级工程师以及系统架构师各个级别的工程师有什么区别,随着年龄增加我们的技术级别也在提升,但是很多人到了高级别反而更加忧虑,因为it行业35岁年龄是个坎这是行业里的共…

图解mybatis日志模块之设计模式

概述

        最近经常在思考研发工程师初、中、高级工程师以及系统架构师各个级别的工程师有什么区别,随着年龄增加我们的技术级别也在提升,但是很多人到了高级别反而更加忧虑,因为it行业35岁年龄是个坎这是行业里的共识,我觉得只要你名副其实就没有什么焦虑的,因为任何行业高端人才肯定是成金字塔型的。要做到不焦虑我们就需要知己知彼,明确不同级别工程师的差异,而不是成为PPT工程师,到了高级工程师级别往上我们不但要具备技术的广度还有对一些技术有深度了解,并且能够吸收优秀软件的设计思维形成自己的一套解决方案,成为某一方面的专家。

        要形成自己的一套解决方案,我们需要擅长做软件设计,而做好软件设计我们需要不断吸收优秀开源软件的设计思想,本文将使用图解的方式详细分析mybatis日志模块之设计模式的运用。

一、单例模式

        单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。结构图如下图所示:

        首先在日志模块我们看到如下图所示的代码,很明显这里应用了单例模式。

二、简单工厂模式

        简单工厂模式(Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。因为在简单工厂模式中用于创建实例的方法是静态(static)方法,因此简单工厂模式又被称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。结构图如下图所示:

        在mybatis中LogFactory就是一个工厂类,会根据环境中不同日志配置来实例化日志对象,如下图所示:

三、适配器模式

        适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。结构图如下所示:

        mybatis为了适配各种不同日志框架的实现,设计了Log接口,从而实现了各种日志框架适配Log接口,如下图所示:

NoLogginImpl:                            无日志的实现,不打印日志直接返回
Sfl4jImpl:                                    适配Sfl4j的实现
Jdk14LoggingImpl:                     适配使用Jdk Logging框架
JakartaCommonsLoggingImpl:  适配使用Apache Commons Logging
Log4jImpl:                                  适配Log4j
Log4j2Impl:                                适配Log4j2
StdOutImpl:                                适配直接使用System.out.println()打印日志

如下以Slf4jImpl实现为例

package org.apache.ibatis.logging.slf4j;import org.apache.ibatis.logging.Log;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.Marker;
import org.slf4j.spi.LocationAwareLogger;/*** @author Clinton Begin* @author Eduardo Macarron* @author kit* @date 20200905*/
public class Slf4jImpl implements Log {private Log log;public Slf4jImpl(String clazz) {Logger logger = LoggerFactory.getLogger(clazz);if (logger instanceof LocationAwareLogger) {try {// check for slf4j >= 1.6 method signaturelogger.getClass().getMethod("log", Marker.class, String.class, int.class, String.class, Object[].class, Throwable.class);log = new Slf4jLocationAwareLoggerImpl((LocationAwareLogger) logger);return;} catch (SecurityException | NoSuchMethodException e) {// fail-back to Slf4jLoggerImpl}}// Logger is not LocationAwareLogger or slf4j version < 1.6log = new Slf4jLoggerImpl(logger);}@Overridepublic boolean isDebugEnabled() {return log.isDebugEnabled();}@Overridepublic boolean isTraceEnabled() {return log.isTraceEnabled();}@Overridepublic void error(String s, Throwable e) {log.error(s, e);}@Overridepublic void error(String s) {log.error(s);}@Overridepublic void debug(String s) {log.debug(s);}@Overridepublic void trace(String s) {log.trace(s);}@Overridepublic void warn(String s) {log.warn(s);}}

可以看到在构造方法中实现了适配能力。

总结

        阅读优秀开源项目开源真切体会到软件优秀的设计思想,当哪天你能看懂代码设计的好坏,并且在自己实际工作中对设计多一些思考,那么你将不再会有焦虑,因为你的能力名副其实。

http://www.yayakq.cn/news/183752/

相关文章:

  • 一流的聊城网站建设admin.php wordpress
  • 网站原型图设计软件滁州做网站公司
  • IT科技资讯新闻类织梦网站模板网站建设与管理教案怎么写
  • 网站建设如何添加歌曲中国建筑网建设通网站
  • 网站备案 停站成都高端网站建设公司哪家好
  • 网站平台开发报价表怎么做海鲜网站模板
  • 无锡网站建设 无锡和诚科技小学文化学网站开发
  • 企业网站样板制作企业免费网站建设哪里比较好
  • php网站后台地址福建宏盛建设集团有限公司网站
  • 在招聘网站做销售怎么样合肥全员核酸检测
  • app网站开发者网站建设 实施计划书
  • 网站优化排名软件哪些 最好医疗网站如何做优化
  • 江苏国家住房和城乡建设部网站电子商务网站建设与管理课后习题
  • 烈焰传奇网页版河池网站优化
  • 电子商务网站建设预算表【转】网页 网站 html如何实现"关闭窗口"代码大全
  • 盐城网站建设hx1818.net 网站开发
  • wordpress建站访问提示不安全电商主题wordpress
  • 先进的网站设计公司企业邮箱个人注册
  • 网站开发的中期工作有哪些做的好的小众网站
  • 网站建设公司销售前景网站建设明薇通网络服务好
  • 西安做网站云速网络用织梦做网站有什么公司会要
  • 苏州网站建设招标网站建设首选定制开发
  • seo整站优化价格如何建设景区旅游网站
  • 佛山h5网站公司网站的虚拟人怎么做的
  • 网站开发需要哪些语言品牌关键词优化哪家便宜
  • 太湖县网站建设公司郑州 建站 公司
  • 政务公开 加强门户网站建设网站用nodejs做后台
  • 江苏省教育现代化建设水平监测网站网站制作有哪些方面
  • 免费自助建手机网站免费做漫画网站
  • 建设部作业证件查询官方网站直播型网站开发