文章分类 -  极客时间

上一页 1 ··· 23 24 25 26 27 28 29 30 31 ··· 45 下一页
摘要:上一节课,我们介绍了如何通过合理的设计,来实现功能性需求的同时,满足易用、易扩展、灵活、低延迟、高容错等非功能性需求。在设计的过程中,我们也借鉴了之前讲过的一些开源项目的设计思想。比如,我们借鉴了Spring的低侵入松耦合、约定优于配置等设计思想,还借鉴了MyBatis通过MyBatis-Sprin 阅读全文
posted @ 2023-01-06 14:10 易先讯 阅读(9) 评论(0) 推荐(0)
摘要:上一节课,我们介绍了限流框架产生的项目背景,并且对需求做了分析,这其中包括功能性需求和非功能性需求,算是在正式开始设计之前的一个铺垫。 前面提到,我们把项目实战分为分析、设计、实现三部分来讲解。其中,分析环节跟之前讲过的面向对象分析很相似,都是做需求的梳理。但是,项目实战中的设计和实现,跟面向对象设 阅读全文
posted @ 2023-01-06 14:10 易先讯 阅读(6) 评论(0) 推荐(0)
摘要:结束了开源实战,从今天开始我们正式进入项目实战模块。在开源实战中,我带你一块剖析了几个著名的开源项目,比如Spring、MyBatis、Google Guava等,剖析了它们背后蕴含的设计思想、原则和模式。 如果说前面讲开源实战是学习别人怎么做,那现在我们讲项目实战就是带你一块做。在这个过程中,我会 阅读全文
posted @ 2023-01-06 14:10 易先讯 阅读(8) 评论(0) 推荐(0)
摘要:上节课,我带你剖析了利用职责链模式和动态代理模式实现MyBatis Plugin。至此,我们已经学习了三种职责链常用的应用场景:过滤器(Servlet Filter)、拦截器(Spring Interceptor)、插件(MyBatis Plugin)。 今天,我们再对MyBatis用到的设计模式做 阅读全文
posted @ 2023-01-06 14:09 易先讯 阅读(10) 评论(0) 推荐(0)
摘要:上节课,我们对MyBatis框架做了简单的背景介绍,并且通过对比各种ORM框架,学习了代码的易用性、性能、灵活性之间的关系。一般来讲,框架提供的高级功能越多,那性能损耗就会越大;框架用起来越简单,提供越简化的使用方式,那灵活性也就越低。 接下来的两节课,我们再学习一下MyBatis用到一些经典设计模 阅读全文
posted @ 2023-01-06 14:09 易先讯 阅读(12) 评论(0) 推荐(0)
摘要:上几节课我们讲到了Spring框架,剖析了背后蕴含的一些通用设计思想,以及用到的十几种设计模式。从今天开始,我们再剖析另外一个Java项目开发中经常用到的框架:MyBatis。因为内容比较多,同样,我们也分三节课来讲解。 第一节课,我们分析MyBatis如何权衡代码的易用性、性能和灵活性。 第二节课 阅读全文
posted @ 2023-01-06 14:08 易先讯 阅读(8) 评论(0) 推荐(0)
摘要:上一节课,我们讲解了Spring中支持扩展功能的两种设计模式:观察者模式和模板模式。这两种模式能够帮助我们创建扩展点,让框架的使用者在不修改源码的情况下,基于扩展点定制化框架功能。 实际上,Spring框架中用到的设计模式非常多,不下十几种。我们今天就总结罗列一下它们。限于篇幅,我不可能对每种设计模 阅读全文
posted @ 2023-01-06 14:08 易先讯 阅读(10) 评论(0) 推荐(0)
摘要:上一节课中,我们学习了Spring框架背后蕴藏的一些经典设计思想,比如约定优于配置、低侵入松耦合、模块化轻量级等等。我们可以将这些设计思想借鉴到其他框架开发中,在大的设计层面提高框架的代码质量。这也是我们在专栏中讲解这部分内容的原因。 除了上一节课中讲到的设计思想,实际上,可扩展也是大部分框架应该具 阅读全文
posted @ 2023-01-06 14:07 易先讯 阅读(9) 评论(0) 推荐(0)
摘要:在Java世界里,Spring框架已经几乎成为项目开发的必备框架。作为如此优秀和受欢迎的开源项目,它是我们源码阅读的首选材料之一,不管是设计思想,还是代码实现,都有很多值得我们学习的地方。接下来,我们就详细讲讲Spring框架中蕴含的设计思想、原则和模式。因为内容比较多,我分三部分来讲解。 第一部分 阅读全文
posted @ 2023-01-06 14:07 易先讯 阅读(14) 评论(0) 推荐(0)
摘要:现在主流的编程范式主要有三种,面向过程、面向对象和函数式编程。在理论部分,我们已经详细讲过前两种了。今天,我们再借机会讲讲剩下的一种,函数式编程。 函数式编程并非一个很新的东西,早在50多年前就已经出现了。近几年,函数式编程越来越被人关注,出现了很多新的函数式编程语言,比如Clojure、Scala 阅读全文
posted @ 2023-01-06 14:07 易先讯 阅读(27) 评论(0) 推荐(0)
摘要:上一节课,我们通过Google Guava这样一个优秀的开源类库,讲解了如何在业务开发中,发现跟业务无关、可以复用的通用功能模块,并将它们从业务代码中抽离出来,设计开发成独立的类库、框架或功能组件。 今天,我们再来学习一下,Google Guava中用到的几种经典设计模式:Builder模式、Wra 阅读全文
posted @ 2023-01-06 14:06 易先讯 阅读(9) 评论(0) 推荐(0)
摘要:上几节课,我们拿Unix这个超级大型开源软件的开发作为引子,从代码设计编写和研发管理两个角度,讲了如何应对大型复杂项目的开发。接下来,我们再讲一下Google开源的Java开发库Google Guava。 Google Guava是一个非常成功、非常受欢迎的开源项目。它在GitHub上由近3.7万的 阅读全文
posted @ 2023-01-06 14:06 易先讯 阅读(10) 评论(0) 推荐(0)
摘要:上两节课,我们分别从代码编写、研发管理的角度,学习了如何应对大型复杂软件开发。在研发管理这一部分,我们又讲到比较重要的几点,它们分别是编码规范、单元测试、持续重构和Code Review。其中,前三点在专栏的理论部分都有比较详细的讲解,而唯独Code Review我们还没有讲过,所以,今天我就借机会 阅读全文
posted @ 2023-01-06 14:05 易先讯 阅读(8) 评论(0) 推荐(0)
摘要:我们知道,项目越复杂、代码量越多、参与开发人员越多、开发维护时间越长,我们就越是要重视代码质量。代码质量下降会导致项目研发困难重重,比如:开发效率低,招了很多人,天天加班,出活却不多;线上bug频发,查找bug困难,领导发飙,中层束手无策,工程师抱怨不断。 导致代码质量不高的原因有很多,比如:代码无 阅读全文
posted @ 2023-01-06 14:05 易先讯 阅读(8) 评论(0) 推荐(0)
摘要:软件开发的难度无外乎两点,一是技术难,意思是说,代码量不一定多,但要解决的问题比较难,需要用到一些比较深的技术解决方案或者算法,不是靠“堆人”就能搞定的,比如自动驾驶、图像识别、高性能消息队列等;二是复杂度,意思是说,技术不难,但项目很庞大,业务复杂,代码量多,参与开发的人多,比如物流系统、财务系统 阅读全文
posted @ 2023-01-06 14:05 易先讯 阅读(11) 评论(0) 推荐(0)
摘要:设计模式的理论部分已经全部学习完了。现在,你可能已经蠢蠢欲动,想要赶紧实践一把,把这些理论应用到自己的项目中。不过,这里我要给你提个醒了,千万别手里拿着锤子就看什么都是钉子啊。 在我过往的项目经历中,经常遇到两种同事。 一种同事会过度设计。在开始编写代码之前,他会花很长时间做代码设计,在开发过程中应 阅读全文
posted @ 2023-01-06 14:04 易先讯 阅读(8) 评论(0) 推荐(0)
摘要:到今天为止,23种经典的设计模式已经全部讲完了。咱们整个专栏也完成了3/4,马上就要进入实战环节了。在进入新模块的学习之前,我照例带你做一下总结回顾。23种经典设计模式共分为3种类型,分别是创建型、结构型和行为型。今天,我们把这3种类型分成3个对应的小模块,逐一带你回顾一下每一种设计模式的原理、实现 阅读全文
posted @ 2023-01-06 14:04 易先讯 阅读(13) 评论(0) 推荐(0)
摘要:今天,我们来学习23种经典设计模式中的最后一个,中介模式。跟前面刚刚讲过的命令模式、解释器模式类似,中介模式也属于不怎么常用的模式,应用场景比较特殊、有限,但是,跟它俩不同的是,中介模式理解起来并不难,代码实现也非常简单,学习难度要小很多。 如果你对中介模式有所了解,你可能会知道,中介模式跟之前讲过 阅读全文
posted @ 2023-01-06 14:03 易先讯 阅读(8) 评论(0) 推荐(0)
摘要:上一节课,我们学习了命令模式。命令模式将请求封装成对象,方便作为函数参数传递和赋值给变量。它主要的应用场景是给命令的执行附加功能,换句话说,就是控制命令的执行,比如,排队、异步、延迟执行命令、给命令执行记录日志、撤销重做命令等等。总体上来讲,命令模式的应用范围并不广。 今天,我们来学习解释器模式,它 阅读全文
posted @ 2023-01-06 14:03 易先讯 阅读(14) 评论(0) 推荐(0)
摘要:设计模式模块已经接近尾声了,现在我们只剩下3个模式还没有学习,它们分别是:命令模式、解释器模式、中介模式。这3个模式使用频率低、理解难度大,只在非常特定的应用场景下才会用到,所以,不是我们学习的重点,你只需要稍微了解,见了能认识就可以了。 今天呢,我们来学习其中的命令模式。在学习这个模式的过程中,你 阅读全文
posted @ 2023-01-06 14:02 易先讯 阅读(16) 评论(0) 推荐(0)

上一页 1 ··· 23 24 25 26 27 28 29 30 31 ··· 45 下一页