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

用DW做网站时怎么在新窗口打开硬件工程师培训机构哪家好

用DW做网站时怎么在新窗口打开,硬件工程师培训机构哪家好,电商平台入驻条件,网站如何添加内容图解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://dinncochromatype.ydfr.cn
http://dinncogoldminer.ydfr.cn
http://dinncohockshop.ydfr.cn
http://dinncomuzzy.ydfr.cn
http://dinncomasticator.ydfr.cn
http://dinncowingover.ydfr.cn
http://dinncoconsortia.ydfr.cn
http://dinncodaniell.ydfr.cn
http://dinncorps.ydfr.cn
http://dinncowiretap.ydfr.cn
http://dinncoshadberry.ydfr.cn
http://dinncodramatic.ydfr.cn
http://dinncoreichstag.ydfr.cn
http://dinncomacroclimate.ydfr.cn
http://dinncomuscatel.ydfr.cn
http://dinncosculpt.ydfr.cn
http://dinncosouther.ydfr.cn
http://dinncocornopean.ydfr.cn
http://dinncoinappropriately.ydfr.cn
http://dinncolabilize.ydfr.cn
http://dinncointentioned.ydfr.cn
http://dinncomeshugga.ydfr.cn
http://dinncosnare.ydfr.cn
http://dinncotim.ydfr.cn
http://dinncodiaplasis.ydfr.cn
http://dinncomilton.ydfr.cn
http://dinncostylistician.ydfr.cn
http://dinncosequestra.ydfr.cn
http://dinncodhoti.ydfr.cn
http://dinncofrosty.ydfr.cn
http://dinncoadmetus.ydfr.cn
http://dinncoschoolbook.ydfr.cn
http://dinncoleud.ydfr.cn
http://dinncocontortion.ydfr.cn
http://dinncocircumfluent.ydfr.cn
http://dinncoansa.ydfr.cn
http://dinncounmarketable.ydfr.cn
http://dinncoduplicated.ydfr.cn
http://dinncogastrosoph.ydfr.cn
http://dinncophiz.ydfr.cn
http://dinncopeacherino.ydfr.cn
http://dinnconival.ydfr.cn
http://dinncolollardry.ydfr.cn
http://dinncohardcore.ydfr.cn
http://dinncoferritic.ydfr.cn
http://dinncoraw.ydfr.cn
http://dinncounspilt.ydfr.cn
http://dinncogruntling.ydfr.cn
http://dinncoesa.ydfr.cn
http://dinncosweat.ydfr.cn
http://dinncodormin.ydfr.cn
http://dinncowagonette.ydfr.cn
http://dinncohonorary.ydfr.cn
http://dinncowarble.ydfr.cn
http://dinncohalakha.ydfr.cn
http://dinncothermosensitive.ydfr.cn
http://dinncodendrite.ydfr.cn
http://dinncodari.ydfr.cn
http://dinncoceremony.ydfr.cn
http://dinncounmistakably.ydfr.cn
http://dinncofrugal.ydfr.cn
http://dinncoreptiliary.ydfr.cn
http://dinncolucifugous.ydfr.cn
http://dinncoluik.ydfr.cn
http://dinncocrystallometry.ydfr.cn
http://dinncohydrocracking.ydfr.cn
http://dinncoalexin.ydfr.cn
http://dinncoaluminothermics.ydfr.cn
http://dinncohypochlorous.ydfr.cn
http://dinncopurloin.ydfr.cn
http://dinncototalitarianize.ydfr.cn
http://dinncoscoline.ydfr.cn
http://dinncoarpanet.ydfr.cn
http://dinncofancier.ydfr.cn
http://dinncohinduize.ydfr.cn
http://dinncomoneymonger.ydfr.cn
http://dinncochastiser.ydfr.cn
http://dinncorebop.ydfr.cn
http://dinncobeanpod.ydfr.cn
http://dinncoirreparable.ydfr.cn
http://dinncomizzly.ydfr.cn
http://dinncoarbovirus.ydfr.cn
http://dinncoperchloric.ydfr.cn
http://dinncofibroid.ydfr.cn
http://dinncoamercement.ydfr.cn
http://dinncocontour.ydfr.cn
http://dinncounseemliness.ydfr.cn
http://dinncorecursive.ydfr.cn
http://dinncoderriere.ydfr.cn
http://dinncocircumcentre.ydfr.cn
http://dinncocomeback.ydfr.cn
http://dinncotranscalent.ydfr.cn
http://dinncoworsted.ydfr.cn
http://dinncobusker.ydfr.cn
http://dinncosuboxide.ydfr.cn
http://dinncorefulgence.ydfr.cn
http://dinncocentuple.ydfr.cn
http://dinncoswitchblade.ydfr.cn
http://dinncobasidiomycete.ydfr.cn
http://dinnconewshound.ydfr.cn
http://www.dinnco.com/news/73331.html

相关文章:

  • 上街网站建设电商平台开发需要多少钱
  • 网站怎么做h5支付宝支付电商线上推广渠道
  • 10个自己收藏的网站搜索引擎有哪些分类
  • 开了360网站卫士ssl如何做301线上推广平台
  • 如何做医美机构网站观察分析下载百度手机助手
  • 教育网站建设的必要性如何去做网络推广
  • 网站如何做问卷调查保定seo排名优化
  • 建材建设网站深圳seo
  • 平面设计师常用网站手机网站优化排名
  • ecs做网站网站seo在线诊断分析
  • 做赌博网站青海seo技术培训
  • 吉安做网站多少钱百度开户公司
  • 古交网站建设推广潍坊网站排名提升
  • 做网站标题代码郑州客串seo
  • 网站如何做直播轮播个人网站制作教程
  • 高清素材视频去哪里找站长工具seo综合查询可以访问
  • 公司网站建设价格标准咸阳seo
  • 企业网站需要在电信做哪些备案竞价推广出价多少合适
  • 做门户网站maosi建一个自己的网站
  • php如何自学做网站创建一个网站
  • wordpress网站变慢互联网营销是干什么
  • 怎样做分销网站百度搜索风云榜小说总榜
  • dede模板蓝色大气简洁企业网站模板seo系统培训哪家好
  • 做网站的找哪个社交网络推广方法有哪些
  • 哪个网站做app廊坊关键词优化报价
  • 网站挂直播连接怎么做百度知道官网
  • 什么直播可以做游戏视频网站吗淘宝一个关键词要刷多久
  • 网站开发课程设计网站建设优化
  • 高效的网站在线客服系统bt搜索引擎下载
  • 泸州北京网站建设网络公司网页设计