自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

李阿昀的博客

求田问舍,怕应羞见,刘郎才气

  • 博客(901)
  • 资源 (44)
  • 收藏
  • 关注

原创 Spring Boot 2从入门到入坟 | 自动配置篇:源码分析之DispatcherServletAutoConfiguration自动配置类

DispatcherServletAutoConfiguration自动配置类的详细分析我们目前开发的是一个Web应用,想都不用想,与Web开发相关的东东肯定是生效了,那接下来我们就来找找呗!我们不妨展开web > servlet包,发现该包下有挺多关于Web的自动配置类(即后缀是AutoConfiguration的类),如下图所示。首先,我们来详细分析一下该包下的第一个自动配置类,即DispatcherServletAutoConfiguration。仔细查阅DispatcherServl

2021-11-03 18:00:21 564

原创 Spring Boot 2从入门到入坟 | 自动配置篇:源码分析之CacheAutoConfiguration自动配置类

CacheAutoConfiguration自动配置类的详细分析我们不妨点开cache包下的CacheAutoConfiguration自动配置类,来分析一下有关缓存的自动配置是否能生效。其实看到这里,相信大家一定认识到这点了,就是我们未来在实际开发中会经常见到XxxAutoConfiguration这样的类,这其实就是Spring Boot的一种设计规则,只要你见到后缀是AutoConfiguration的类,就意味着这代表的就是一个自动配置类,它会帮我们配好所有的东西,但该自动配置类能否生效,那还

2021-11-03 17:02:02 398

原创 Spring Boot 2从入门到入坟 | 自动配置篇:源码分析之AopAutoConfiguration自动配置类

写在前面在前面两篇文章中,我们研究完了@EnableAutoConfiguration注解,该注解按照字面意思翻译过来应该就是开启自动配置功能的意思。通过前面的分析,我们也已经知道了,该注解会通过@Import(AutoConfigurationImportSelector.class)注解在Spring Boot应用一启动的时候就导入130个自动配置类,当然了,这130个自动配置类又不能都净数生效。为什么呢?因为每一个自动配置类里面,当然了,如果你点进去的话,那么你都能看到它里面标有@Conditio

2021-11-02 16:47:50 477

原创 Spring Boot 2从入门到入坟 | 基础入门篇:你会看Spring Boot的官方文档吗?

开宗明义:如何学习Spring Boot呢?其实学习任何一门新技术,我们都应该以它的官方文档为准。接下来,我们就来熟悉一下Spring Boot官方文档的整个架构,因为我们未来学习很多技术时,都是要参照官方文档来学习的,这样的话,我们就必须得知道所学习的每一个知识点都是出自于官方文档哪个位置。我希望大家通过本讲的学习,能非常熟悉Spring Boot的官方文档,这样,无论Spring Boot升级到什么版本了,相信大家都能依据官方文档来自学了。官方文档架构首先,大家得明确一点,就是在本套系列教程中,

2021-10-22 12:27:38 1009 3

原创 Spring Boot 2从入门到入坟 | 基础入门篇:Spring Boot的大时代背景

在前一讲中,我为大家介绍Spring Boot时,提出了一些概念,例如微服务、分布式等等,所以,我觉得有必要在本讲给大家说一下Spring Boot现在所处的大时代背景。首先,我先给大家介绍一下微服务。微服务早在2014年,James Lewis和Martin Fowler就提出了微服务的完整概念。大家不妨点开如下地址去看一下微服务的完整概念。https://martinfowler.com/microservices/点开以上地址之后,你就能一睹微服务的完整概念了,如下图所示。这里,我也将

2021-10-20 09:09:01 330 2

原创 Spring Boot 2从入门到入坟 | 基础入门篇:「Spring Boot 2从入门到入坟」系列教程介绍

我李阿昀又回来了!我可爱的读者们,我想死你们啦!我李阿昀又回来了!嘿嘿????好久都没更新「Spring Boot 2从入门到入坟」这一系列教程了,大家等得着急吗?从今年4月15日起,细细想来已有半载了,时光真如梭啊!昔者,子在川上曰:逝者如斯夫,不舍昼夜!顿时,心中不禁生出空悲切之情!半载时光晃晃悠悠就过去了,可我感觉还什么事都没做!但是也不是什么事也没做啦,「从零开始学习Java设计模式」这一系列教程我算是更新完了,也算是能聊表我心吧!想来,我做事还是比较认真的,一篇文章认认真真写了又改,改了又写,

2021-10-18 09:51:05 980 3

原创 我的自定义Spring框架 | 自定义Spring IoC功能

分析完与Spring IoC功能相关的接口之后,接下来我们就要来自定义Spring IoC功能了。首先,我们先来看一下需求:现要对下面的配置文件进行解析,并自定义Spring框架的IoCs功能对涉及到的对象进行管理。<?xml version="1.0" encoding="UTF-8"?><beans> <bean id="userDao" class="com.meimeixia.dao.impl.UserDaoImpl"> <p

2021-10-14 09:57:16 1679 7

原创 我的自定义Spring框架 | Spring IoC相关接口分析

在本讲,我们来对Spring IoC功能相关的接口逐一进行分析,分析这些接口的原因就是为了我们自己定义Spring IoC功能提前做好准备。BeanFactory接口解析对于BeanFactory接口,我之前只是稍微提到过,并且将就着用了一下它。这里,我将会对BeanFactory接口进行一个具体讲解。Spring中bean的创建是典型的工厂模式,这一系列的bean工厂,即IoC容器,为开发者管理对象之间的依赖关系提供了很多便利和基础服务,在Spring中有许多IoC容器的实现可供用户选择,其相互关系

2021-10-12 11:46:09 426

原创 我的自定义Spring框架 | Spring核心功能结构

在上一讲中,我们对Spring的基本使用进行了一个简单的回顾,接下来,我们就来看一下Spring核心功能结构。Spring核心功能结构Spring大约有20个模块,由1300多个不同的文件构成,而这些模块可以分为下面几部分:核心容器AOP和设备支持数据访问与集成Web组件通信报文集成测试······下面这张图就是Spring框架的总体架构图。接下来,我就带领着大家逐一看一下Spring里面的这些模块。核心容器核心容器由Beans、Core、Context和Expression

2021-10-12 07:46:50 2608 8

原创 我的自定义Spring框架 | 回顾Spring框架的基本使用

从现在开始,大家可以跟随着我的脚步来自定义一个属于自己的Spring框架。但是,在学习自定义Spring框架之前,我们得先来回顾一下Spring框架的基本使用。知晓了Spring框架的基本使用之后,我们将会在此基础上分析Spring的核心,即IoC,最后我们会对该核心进行一个模拟。相信大家都使用过Spring框架,现在恐怕是无人不知Spring了吧!因为我相信你在实际项目开发中肯定用到过它,一般在实际项目中用到它的话,都会采用Java EE的三层架构,这三层架构是:数据访问层,也即Dao层业务逻辑层

2021-10-11 11:30:27 645

原创 从零开始学习Java设计模式 | 行为型模式篇:解释器模式

在本讲,我们来学习一下行为型模式里面的最后一个设计模式,即解释器模式。总算是将这23种设计模式干完了,奥里给!概述在学习解释器模式之前,我们先来看下下面这张图。可以看到,这就是一个计算器,大家平时用的应该也是比较多的,当我们输入了1+2+3+4-5之后,它就会给我们出一个结果5。现在我们想要设计一个软件,类似于这样的一个计算器,用来进行加减计算。各位来思考一下,我们应该如何来设计这样一个软件呢?可能大家的第一想法就是写个工具类不就得了,然后在该工具类中提供对应的加法和减法的工具方法,就像下面这段代

2021-10-09 21:33:32 1278 4

原创 从零开始学习Java设计模式 | 行为型模式篇:备忘录模式

在本讲,我们来学习一下行为型模式里面的第十个设计模式,即备忘录模式。概述在学习备忘录模式的概念之前,我们先来看下面这段描述。备忘录模式提供了一种状态恢复的实现机制,使得用户可以方便地回到一个特定的历史步骤,当新的状态无效或者存在问题,或者就想回到之前的历史步骤时,可以使用暂时存储起来的备忘录将状态复原,很多软件都提供了撤销(Undo)操作,如Word、记事本、PhotoShop、IDEA等软件在编辑时按Ctrl+Z组合键时就能撤销当前操作,使文档恢复到之前的状态;还有在浏览器中的后退键、数据库事务管理

2021-10-07 21:29:43 715

原创 从零开始学习Java设计模式 | 行为型模式篇:访问者模式

在本讲,我们来学习一下行为型模式里面的第九个设计模式,即访问者模式。概述先来看一下访问者模式的概念。封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。上述访问者模式的概念看完之后,相信大家都懵了,没关系,下面我给大家解释解释。访问者模式是说封装一些作用于某种数据结构中的各元素的操作,这句话表示什么含义呢?其实就是说将数据结构和元素的操作进行了一个分离,分离之后,访问者模式就可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。

2021-10-05 12:26:05 471 1

原创 从零开始学习Java设计模式 | 行为型模式篇:迭代器模式

在本讲,我们来学习一下行为型模式里面的第八个设计模式,即迭代器模式。概述相信大家对于迭代器并不会感到陌生,因为平时我们使用的还是比较多的,注意,在这儿我说的是使用。

2021-10-03 10:20:32 607

原创 从零开始学习Java设计模式 | 行为型模式篇:中介者模式

在本讲,我们来学习一下行为型模式里面的第七个设计模式,即中介者模式。概述在学习中介者模式之前,我们先来看下面这段描述。一般来说,同事类之间的关系是比较复杂的(其实,这儿所说的同事类就是中介者模式里面的一个角色,而在这里,你可以先把它当作一个普通的类来看待),多个同事类之间互相关联时,他们之间的关系会呈现为复杂的网状结构,这是一种过度耦合的架构,既不利于类的复用,也不稳定。例如,下图中有六个同事类对象,假如对象1发生变化,那么将会有4个对象受到影响,因为对象1所属类和对象2、对象4、对象5、对象6所属类

2021-09-29 20:27:58 974 3

原创 从零开始学习Java设计模式 | 行为型模式篇:观察者模式

在本讲,我们来学习一下行为型模式里面的第六个设计模式,即观察者模式。概述我们先来看一看观察者模式的概念。观察者模式又被称为发布/订阅(Publish/Subscribe)模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象(所以,观察者对象是多的一方,主题对象是一的一方)。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。以上观察者模式的概念,大家可以理解成之前学习过的监听机制。简单来说,就是我们创建一个监听器,并让该监听器去监听一个按钮,当该按钮的

2021-09-28 17:24:39 620 1

原创 从零开始学习Java设计模式 | 行为型模式篇:状态模式

在本讲,我们来学习一下行为型模式里面的第五个设计模式,即状态模式。状态模式引入案例在学习状态模式之前,我们先来看一个案例,通过该案例来引出状态模式。这个案例就是通过电梯按钮来控制一个电梯的状态。一个电梯有开门状态、关门状态、停止状态、运行状态等四种状态。每一种状态改变,都有可能要根据其他状态来更新处理。例如,如果电梯门现在处于运行时状态,那么就不能进行开门操作。为什么呢?你想啊,现在电梯正处于运行状态呢,然后门开了,这是不是非常危险呀!所以,当电梯处于运行状态时是不允许执行开门操作的。而如果电梯门是停

2021-09-26 20:43:34 1153 1

原创 从零开始学习Java设计模式 | 行为型模式篇:责任链模式

在本讲,我们来学习一下行为型模式里面的第四个设计模式,即责任链模式。概述在学习责任链模式之前,我们先来看一下下面这段描述。在现实生活中,常常会出现这样的事例:一个请求有多个对象可以处理,但每个对象的处理条件或权限不同。例如,公司员工请假,可批假的领导有部门负责人、副总经理、总经理等,但是每个领导能批准的天数不同,员工必须根据自己要请假的天数去找不同的领导签名,也就是说员工必须记住每个领导的姓名、电话和地址等信息,这增加了员工请假的难度。因为领导有很多,员工到底找哪位领导他还得自己判断,所以这会显得特别

2021-09-21 19:21:28 811 4

原创 从零开始学习Java设计模式 | 行为型模式篇:命令模式

在本讲,我们来学习一下行为型模式里面的第三个设计模式,即命令模式。概述首先,我们先来看下这样一个场景:在日常生活中,我们出去吃饭都会遇到下面的场景。顾客把订单交给女服务员,女服务员拿到这个订单之后放在订单柜台,然后喊一声:“订单来了!”,厨师拿到这个订单之后就开始准备餐点。这里我们来思考一个问题,如果真要去实现以上这样一个场景的话,那么又该如何来实现呢?大家想一想,服务员要下单的话,那么她是不是得把单下给某一个厨师呀!所以,要是按照之前的做法,那就是在服务员对象里面创建一个厨师对象,然后服务员下

2021-09-13 16:18:35 621

原创 从零开始学习Java设计模式 | 行为型模式篇:策略模式

在本讲,我们来学习一下行为型模式里面的第二个设计模式,即策略模式。概述先看下面的图片,我们去旅游选择出行方式能有很多种,可以骑自行车、可以坐汽车、可以坐火车、可以坐飞机。作为一个程序猿,开发需要选择一款开发工具,当然可以进行代码开发的工具有很多,既可以选择IDEA进行开发,也可以使用Eclipse进行开发,也可以使用其他的一些开发工具。从第一张图可以看到,不管我们选择哪种交通方式,最终都是要到达目的地。从第二张图可以看到,不管程序猿使用哪个开发工具,他最终的目的就是开发出来一款软件。注意,这两个

2021-09-10 21:13:59 808

原创 从零开始学习Java设计模式 | 行为型模式篇:模板方法模式

接下来,我们来学习第四章的内容,即行为型模式。简单聊聊行为型模式首先,我们来看一看什么是行为型模式。行为型模式用于描述程序在运行时复杂的流程控制(我们之前学习过很多流程控制语句,例如if else、switch、for循环等等),即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。什么意思呢?也就是说如果是多个类的话,那么我们可以使用继承的关系来让其完成复杂的流程控制;如果是多个对象的话,那么我们可以通过对象的聚合或者组合来完成一个复杂的流程控制。而

2021-09-08 15:45:06 683 2

原创 从零开始学习Java设计模式 | 结构型模式篇:享元模式

在本讲,我们来学习一下结构型模式里面的最后一个设计模式,即享元模式。概述什么是享元模式呢?享元模式是运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似对象的开销,从而提高系统资源的利用率。知道享元模式的概念之后,我们来看一下现实生活中哪些地方大量的运用到了这种共享思想。大家不妨开动脑筋想一想,共享单车是不是就是啊!在没有共享单车的时候,如果你想骑自行车的话,那么你是不是就得需要自己去购买一辆自行车啊!可能你骑了两天的自行车,热度过了之后,

2021-09-02 12:24:25 672 4

原创 从零开始学习Java设计模式 | 结构型模式篇:组合模式

在本讲,我们来学习一下结构型模式里面的第六个设计模式,即组合模式。概述在学习组合模式之前,我们先来看下面这张图。对于以上这张图大家应该很熟悉,我们可以将其看作是一个文件系统,其实说到底它就是Windows系统里面的一个目录结构,只不过对于Windows中的文件系统而言,它里面包含有C盘、D盘、E盘等等盘符,而这里我们只是以它里面的某一个盘符里面的目录结构为例来进行了一个描述。对于这样的结构我们称之为树形结构。为啥叫树形结构呢?你看一下上图中的左边部分,最上面是不是有一个WINDOWS目录啊,而该W

2021-08-30 10:31:05 1246 6

原创 从零开始学习Java设计模式 | 结构型模式篇:外观模式

在本讲,我们来学习一下结构型模式里面的第五个设计模式,即外观模式。概述在向大家讲解外观模式之前,我们先来看一个例子。有些人可能炒过股票,但其实大部分人都是不太懂里面的一些操作的,这种没有足够了解证券知识的情况下炒股票是很容易亏钱的,刚开始炒股时我们肯定都会想,如果有个懂行的帮帮手就好了,其实基金就是个好帮手,支付宝里就有许多的基金,它将投资者分散的资金集中起来,交由专业的经理人进行管理,投资于股票、债券、外汇等领域,而基金投资的收益归持有者所有,管理机构则是收取一定比例的托管管理费用。其实,其实,以

2021-08-19 09:55:09 666 2

原创 从零开始学习Java设计模式 | 结构型模式篇:桥接模式

在本讲,我们来学习一下结构型模式里面的第四个设计模式,即桥接模式。概述在向大家讲解桥接模式之前,我们先来看一个例子。现在有一个需求,需要创建不同的图形,例如圆、长方形、正方形等等,并且每个图形都有可能会有不同的颜色,这样,我们就可以利用继承的方式来设计类之间的关系了。我们可以发现有很多的类,假如我们再增加一个形状或再增加一种颜色的话,你会发现需要创建更多的子类,极有可能会出现类爆炸的现象。试想,在一个有多种可能会变化的维度的系统中,用继承方式势必就会造成类爆炸的现象,扩展起来也不灵活,即使它满足

2021-08-18 21:16:19 940 1

原创 从零开始学习Java设计模式 | 结构型模式篇:装饰者模式

在本讲,我们来学习一下结构型模式里面的第三个设计模式,即装饰者模式。概述在学习装饰者模式之前,我们先来看一个快餐店的例子。快餐店有炒面、炒饭这些快餐,可以额外附加鸡蛋、火腿、培根这些配菜,当然加配菜需要额外加钱,每个配菜的价钱通常不太一样,那么这样计算总价就会显得比较麻烦。比如说客户点一份炒面,他还要再加一个鸡蛋和一根火腿,那么计算总价的时候就会很麻烦。假设我们现在要设计这么一个计算总价的系统的话,那么用传统的方式应该如何去做呢?是不是立马想到了要用继承的方式去做啊!这时,所设计出来的类图就应该是下

2021-08-17 11:39:10 3312 21

原创 从零开始学习Java设计模式 | 结构型模式篇:适配器模式

在本讲,我们来学习一下结构型模式里面的第二个设计模式,即适配器模式。概述在学习适配器模式之前,我们先来看下下面这个场景。如果去欧洲国家旅游的话,他们的插座如下图最左边,是欧洲标准,而我们使用的插头如下图最右边,很显然,我们的插头是不能直接插到欧标的插座上面的。因此我们的笔记本电脑、手机在当地都不能直接充电,所以此时我们就需要一个插座转换器了,转换器第1面插入当地的插座,第2面供我们充电,这样使得我们的插头在当地就能使用了,也就是说我们的笔记本电脑、手机等在当地就可以正常的进行充电操作了。[外链图片转

2021-08-10 22:46:16 880 4

原创 从零开始学习Java设计模式 | 结构型模式篇:代理模式

从本讲开始,我们就进入到第三章内容的学习中了,而第三章内容讲的就是结构型模式,所以我们有必要知道什么是结构型模式。什么是结构型模式呢?结构型模式描述如何将类或对象按某种布局组成更大的结构(可知,结构型模式强调的就是这个结构)。它分为类结构型模式和对象结构型模式,前者采用继承机制(或者实现机制)来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足"合成复用原则",所以对象结构型模式比类结构型模式具有更大的灵活性。知道了什么是结构型模式之后,接下来我们来看一下结构型

2021-08-03 20:12:08 1195 7

原创 从零开始学习Java设计模式 | 创建型模式篇:建造者模式

在本讲,我们来学习一下创建型模式里面的最后一个设计模式,即建造者模式。概述建造者模式是指将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。读完这句话之后,我估计很多人都已经懵了,这说的是什么意思啊?哈哈哈????,别急,下面我会给大家解释一下,先看一下下面这张图。上图右边是一个主机,而左边则是主机里面包含的部件(或者组件),有主板、cpu、内存条、风扇、硬盘以及电源。结合这张图,我来向大家解释一下建造者模式的概念。建造者模式的概念中不是有一个复杂对象吗?你可以将其理解为上图中

2021-07-21 22:53:00 1156 4

原创 从零开始学习Java设计模式 | 创建型模式篇:原型模式

在本讲,我们来学习一下创建型模式里面的第四个设计模式,即原型模式。概述原型模式就是指用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。这段话有点绕,是不是?没有关系,这里我举一个例子来给大家解释一下。大家还记得很早以前的一个新闻——克隆羊吧!如果我们...

2021-07-19 23:24:00 1018 5

原创 从零开始学习Java设计模式 | 创建型模式篇:抽象工厂模式

在本讲,我们来学习一下创建型模式里面的第三个设计模式,即抽象工厂模式。前言前面介绍的工厂方法模式中考虑的是一类产品,如畜牧场只养动物、电视机厂只生产电视机(不生产空调、冰箱等其它的电器)、计算机学院只培养计算机软件专业的学生等。这些工厂只生产同种类产品,而同种类产品又被称为同等级产品,也就是说,工厂方法模式只考虑生产同等级的产品,但是在现实生活中许多工厂都是综合型的工厂,能生产多等级(种类) 的产品,如电器厂既生产电视机又生产洗衣机或空调,苹果代工厂既生产苹果电脑又生产苹果手机或苹果iPad,大学既有

2021-07-15 17:22:00 994 5

原创 从零开始学习Java设计模式 | 创建型模式篇:工厂方法模式

在本讲,我们来学习一下创建型模式里面的第二个设计模式,即工厂方法模式。概述在学习工厂方法模式之前,我们先来看一个需求,设计一个咖啡店点餐系统。下面我们就来分析一下该需求。咖啡店点餐系统点的肯定是咖啡,所以我们需要设计一个咖啡类(即Coffee),而咖啡它又有不同的品种:美式咖啡、拿铁咖啡等。这样,我们又得设计两个类,即美式咖啡类(即AmericanCoffee)和拿铁咖啡类(即LatteCoffee),很显然,我们得让这俩类去继承咖啡类,因为它俩可以向上抽取出共性的东西,而这些共性的东西可以放在咖啡类

2021-07-14 11:38:36 1687 8

原创 从零开始学习Java设计模式 | 创建型模式篇:单例设计模式

从本讲开始,咱们就要开始正式学习23种设计模式了。当然,我们得按照顺序来学,首先先来学习23种设计模式里面的第一类模式,即创建型模式。创建型模式的主要关注点是"怎样创建对象?",它的主要特点是"将对象的创建与使用分离"。也就是说,如果我们作为一个使用者的话,那么我们可以直接通过某种方式去获取别人创建好的对象,至于别人是如何创建的,我们并不关注。这样,就可以降低系统的耦合度了,使用者并不需要关注对象的创建细节,尤其是那些创建特别麻烦的对象。于是,创建型模式的好处就这样体现出来了。此外,我们还应知道,创建型

2021-07-08 10:40:30 1721 8

原创 从零开始学习Java设计模式 | 软件设计原则篇:合成复用原则

在本讲,我将为大家介绍软件设计原则里面的第六个原则,即合成复用原则。概述合成复用原则是指尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。我们之前讲过继承关系,虽然使用继承可以提高代码的复用性,但是它存在很多问题,这些问题等会我们再去说,大家也别着急。了解了合成复用原则的概念之后,我们还应知道,通常类的复用可分为继承复用(使用继承实现代码的复用性)和合成复用(使用组合或者聚合实现代码的复用性)两种。而且,这两种复用各有其优缺点,下面我就为大家详细阐述一下。我们先来看下继承复用的

2021-07-08 08:38:14 1080 6

原创 从零开始学习Java设计模式 | 软件设计原则篇:迪米特法则

在本讲,我将为大家介绍软件设计原则里面的第五个原则,即迪米特法则。概述迪米特法则,又叫最少知识原则。其表示的含义是只和你的直接朋友交谈,不跟"陌生人"说话。看到这儿的话,很多人会一头雾水,尼玛的,这到底表示什么含义啊?不着急,咱们看下下面这段描述。如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。其目的是降低类之间的耦合度,提高模块的相对独立性。大家看到这儿,可能还不是特别理解,没关系,下面我会举几个现实生活中的例子来向大家解释一下。看这样一个例子,如果

2021-07-06 12:16:34 1141 11

原创 从零开始学习Java设计模式 | 软件设计原则篇:接口隔离原则

在本讲,我将为大家介绍软件设计原则里面的第四个原则,即接口隔离原则。概述接口隔离原则是指客户端不应该被迫依赖于它不使用的方法,一个类对另一个类的依赖应该建立在最小的接口上面。这句话可能不是很好理解,所以下面我会画一张图来解释一下。先看的是前半段话,客户端不应该被迫依赖于它不使用的方法,这是什么意思呢?从上图中,相信大家能够更好地理解前半段话的内容,所以,在上述这种情景下,我们是不能使用继承关系的。那么,现在我们应该如何对其进行改进呢?其实,在接口隔离原则概述的后半段话中就已经说了,即一个类对另一个

2021-07-06 09:35:06 2091 20

原创 从零开始学习Java设计模式 | 软件设计原则篇:依赖倒转原则

在本讲,我将为大家介绍软件设计原则里面的第三个原则,即依赖倒转原则。概述什么是依赖倒转原则呢?我们来看一下下面这段描述:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。这句话看起来就不好懂,不过没关系,下面我会为大家详细解释下。你可能会问的第一个问题是高层模块是什么?底层模块又是什么?下面我用一张图来解释一下。...

2021-07-04 16:49:53 1088 2

原创 从零开始学习Java设计模式 | 软件设计原则篇:里氏代换原则

在本讲中,我来为大家介绍一下软件设计原则里面的第2个原则,即里氏代换原则。概述首先,大家应该知道,里氏代换原则是面向对象设计的基本原则之一。那什么是里氏代换原则呢?里氏代换原则是指任何基类可以出现的地方,子类一定可以出现。这句话不好理解,但大家可以通俗理解成子类可以扩展父类的功能,但不能改变父类原有的功能。现在,这句话就好理解很多了,指的就是在Java里面通常都会有父子类的关系,一般而言,我们都会将子类中的功能抽取到父类中,以提高代码的复用性,而在子类中,我们只需要去定义子类特有的功能即可。换句话说,

2021-07-02 22:09:40 2468 25

原创 从零开始学习Java设计模式 | 软件设计原则篇:开闭原则

从本讲开始,咱们就要开始学习第一章中的第三部分内容,即软件设计原则了。在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据6条原则来开发程序,从而提高软件开发效率、节约软件开发成本和维护成本。那么是6条原则呢?看过我前面文章的同学肯定知道,就是下面这6条原则。开闭原则里氏代换原则依赖倒转原则接口隔离原则迪米法特原则合成复用原则本讲我会为大家介绍第一个软件设计原则,即开闭原则。概述什么是开闭原则呢?开闭原则就是对扩展开放,对修改关闭。在程序

2021-07-01 09:57:58 1430 9

原创 从零开始学习Java设计模式 | 设计模式入门篇:UML图

在上一讲中,我为大家介绍完了第一章中的第一部分内容,接下来,在本讲中,我便来为大家介绍一下第一章中的第二部分内容,即UML图。那么,UML它到底是什么呢?它被称为统一建模语言(Unified Modeling Language,简称为UML),即用来设计软件的可视化建模语言。其特点是简单、统一、图形化,能表达软件设计中的动态和静态信息。而在本讲中我们所要学习的UML里面的类图,它主要体现的就是静态信息。下面,我们来看一下UML它包含了哪些图?UML从目标系统的不同角度出发,定义了用例图、类图、对象图、状

2021-06-30 06:02:44 1734 7

教你一天玩转JavaScript(四)——使用JavaScript实现定时弹出广告定时隐藏广告

教你一天玩转JavaScript(四)——使用JavaScript实现定时弹出广告定时隐藏广告

2017-05-02

教你一天玩转JavaScript(三)——使用JavaScript完成图片轮播的效果

教你一天玩转JavaScript(三)——使用JavaScript完成图片轮播的效果

2017-04-27

教你一天玩转JavaScript(二)——完成对注册页面的数据的简单校验

教你一天玩转JavaScript(二)——完成对注册页面的数据的简单校验

2017-04-27

Spring4.2.5+Hibernate4.3.11+Struts2.3.24整合开发

Spring4.2.5+Hibernate4.3.11+Struts2.3.24整合开发

2016-10-23

Spring提供的CharacterEncoding和OpenSessionInView功能

Spring提供的CharacterEncoding和OpenSessionInView功能

2016-10-23

为Spring集成的Hibernate配置二级缓存

为Spring集成的Hibernate配置二级缓存

2016-10-23

Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案二

Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案二

2016-10-22

Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一

Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一

2016-10-22

Spring4.2.5+Hibernate4.3.11组合开发

Spring4.2.5+Hibernate4.3.11组合开发

2016-10-21

Spring+JDBC组合开发

Spring+JDBC组合开发

2016-10-21

使用Spring配置文件实现AOP

使用Spring配置文件实现AOP

2016-10-21

使用Spring的注解方式实现AOP的细节

使用Spring的注解方式实现AOP的细节

2016-10-21

使用Spring的注解方式实现AOP入门

使用Spring的注解方式实现AOP入门

2016-10-20

使用JDK中的Proxy技术实现AOP功能与使用CGLIB实现AOP功能

使用JDK中的Proxy技术实现AOP功能与使用CGLIB实现AOP功能

2016-10-19

让Spring自动扫描和管理Bean

让Spring自动扫描和管理Bean

2016-10-19

编码剖析@Resource注解的实现原理

编码剖析@Resource注解的实现原理

2016-10-19

用@Resource注解完成属性装配

用@Resource注解完成属性装配

2016-10-19

Spring如何装配各种集合类型的属性

Spring如何装配各种集合类型的属性

2016-10-19

编码剖析Spring装配基本属性的原理

编码剖析Spring装配基本属性的原理

2016-10-19

编码剖析Spring依赖注入的原理

编码剖析Spring依赖注入的原理

2016-10-17

一天搞定jQuery(五)——使用jQuery完成下拉列表左右选择

一天搞定jQuery(五)——使用jQuery完成下拉列表左右选择

2017-07-06

SpringMVC学习(十二)——SpringMVC中的拦截器

SpringMVC学习(十二)——SpringMVC中的拦截器

2017-05-20

SpringMVC学习(四)——Spring、MyBatis和SpringMVC的整合

SpringMVC学习(四)——Spring、MyBatis和SpringMVC的整合

2017-05-15

SpringMVC学习(一)——SpringMVC入门小程序

SpringMVC学习(一)——SpringMVC入门小程序

2017-05-15

MyBatis的逆向工程测试

MyBatis的逆向工程——generatorSqlmapCustom

2017-05-13

MyBatis的逆向工程

MyBatis的逆向工程——generatorSqlmapCustom

2017-05-13

MyBatis框架的学习(七)——MyBatis逆向工程自动生成代码

MyBatis框架的学习(七)——MyBatis逆向工程自动生成代码

2017-05-13

MyBatis的逆向工程——generatorSqlmapCustom

MyBatis的逆向工程——generatorSqlmapCustom

2017-05-13

MyBatis框架的学习(六)——MyBatis整合Spring

MyBatis框架的学习(六)——MyBatis整合Spring

2017-05-13

MyBatis框架的学习(五)——一对一关联映射和一对多关联映射

MyBatis框架的学习(五)——一对一关联映射和一对多关联映射

2017-05-13

MyBatis框架的学习(二)——MyBatis架构与入门

MyBatis框架的学习(二)——MyBatis架构与入门

2017-05-11

一天搞定jQuery(四)——使用jQuery完成省市二级联动的效果

一天搞定jQuery(四)——使用jQuery完成省市二级联动的效果

2017-05-11

一天搞定jQuery(三)——使用jQuery完成复选框的全选和全不选

一天搞定jQuery(三)——使用jQuery完成复选框的全选和全不选

2017-05-11

一天搞定jQuery(二)——使用jQuery表格的隔行换色

一天搞定jQuery(二)——使用jQuery表格的隔行换色

2017-05-10

一天搞定jQuery(一)——使用jQuery完成定时弹出广告

一天搞定jQuery(一)——使用jQuery完成定时弹出广告

2017-05-09

使用流程设计器插件设计一个请假流程

使用流程设计器插件设计一个请假流程

2017-05-07

教你一天玩转JavaScript(八)——使用JavaScript完成省市联动的效果

教你一天玩转JavaScript(八)——使用JavaScript完成省市联动的效果

2017-05-05

教你一天玩转JavaScript(七)——使用JavaScript完成复选框的全选和全不选的效果

教你一天玩转JavaScript(七)——使用JavaScript完成复选框的全选和全不选的效果

2017-05-05

教你一天玩转JavaScript(六)——使用JavaScript完成后台数据展示表格的隔行换色

教你一天玩转JavaScript(六)——使用JavaScript完成后台数据展示表格的隔行换色

2017-05-04

教你一天玩转JavaScript(五)——使用JavaScript完成注册页面表单提示及校验

教你一天玩转JavaScript(五)——使用JavaScript完成注册页面表单提示及校验

2017-05-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除