文章分类 -  极客时间

上一页 1 ··· 25 26 27 28 29 30 31 32 33 ··· 45 下一页
摘要:上一节课我们学习了桥接模式,桥接模式有两种理解方式。第一种理解方式是“将抽象和实现解耦,让它们能独立开发”。这种理解方式比较特别,应用场景也不多。另一种理解方式更加简单,类似“组合优于继承”设计原则,这种理解方式更加通用,应用场景比较多。不管是哪种理解方式,它们的代码结构都是相同的,都是一种类之间的 阅读全文
posted @ 2023-01-06 10:20 易先讯 阅读(6) 评论(0) 推荐(0)
摘要:上一节课我们学习了第一种结构型模式:代理模式。它在不改变原始类(或者叫被代理类)代码的情况下,通过引入代理类来给原始类附加功能。代理模式在平时的开发经常被用到,常用在业务系统中开发一些非功能性需求,比如:监控、统计、鉴权、限流、事务、幂等、日志。 今天,我们再学习另外一种结构型模式:桥接模式。桥接模 阅读全文
posted @ 2023-01-06 10:20 易先讯 阅读(7) 评论(0) 推荐(0)
摘要:前面几节,我们学习了设计模式中的创建型模式。创建型模式主要解决对象的创建问题,封装复杂的创建过程,解耦对象的创建代码和使用代码。 其中,单例模式用来创建全局唯一的对象。工厂模式用来创建不同但是相关类型的对象(继承同一父类或者接口的一组子类),由给定的参数来决定创建哪种类型的对象。建造者模式是用来创建 阅读全文
posted @ 2023-01-06 10:19 易先讯 阅读(7) 评论(0) 推荐(0)
摘要:对于创建型模式,前面我们已经讲了单例模式、工厂模式、建造者模式,今天我们来讲最后一个:原型模式。 对于熟悉JavaScript语言的前端程序员来说,原型模式是一种比较常用的开发模式。这是因为,有别于Java、C++等基于类的面向对象编程语言,JavaScript是一种基于原型的面向对象编程语言。即便 阅读全文
posted @ 2023-01-06 10:19 易先讯 阅读(2) 评论(0) 推荐(0)
摘要:上两节课中,我们学习了工厂模式,讲了工厂模式的应用场景,并带你实现了一个简单的DI容器。今天,我们再来学习另外一个比较常用的创建型设计模式,Builder模式,中文翻译为建造者模式或者构建者模式,也有人叫它生成器模式。 实际上,建造者模式的原理和代码实现非常简单,掌握起来并不难,难点在于应用场景。比 阅读全文
posted @ 2023-01-06 10:18 易先讯 阅读(3) 评论(0) 推荐(0)
摘要:在上一节课我们讲到,当创建对象是一个“大工程”的时候,我们一般会选择使用工厂模式,来封装对象复杂的创建过程,将对象的创建和使用分离,让代码更加清晰。那何为“大工程”呢?上一节课中我们讲了两种情况,一种是创建过程涉及复杂的if-else分支判断,另一种是对象创建需要组装多个其他类对象或者需要复杂的初始 阅读全文
posted @ 2023-01-06 10:18 易先讯 阅读(4) 评论(0) 推荐(0)
摘要:上几节课我们讲了单例模式,今天我们再来讲另外一个比较常用的创建型模式:工厂模式(Factory Design Pattern)。 一般情况下,工厂模式分为三种更加细分的类型:简单工厂、工厂方法和抽象工厂。不过,在GoF的《设计模式》一书中,它将简单工厂模式看作是工厂方法模式的一种特例,所以工厂模式只 阅读全文
posted @ 2023-01-06 10:18 易先讯 阅读(3) 评论(0) 推荐(0)
摘要:上两节课中,我们针对单例模式,讲解了单例的应用场景、几种常见的代码实现和存在的问题,并粗略给出了替换单例模式的方法,比如工厂模式、IOC容器。今天,我们再进一步扩展延伸一下,一块讨论一下下面这几个问题: 如何理解单例模式中的唯一性? 如何实现线程唯一的单例? 如何实现集群环境下的单例? 如何实现一个 阅读全文
posted @ 2023-01-06 10:17 易先讯 阅读(3) 评论(0) 推荐(0)
摘要:上一节课中,我们通过两个实战案例,讲解了单例模式的一些应用场景,比如,避免资源访问冲突、表示业务概念上的全局唯一类。除此之外,我们还学习了Java语言中,单例模式的几种实现方法。如果你熟悉的是其他编程语言,不知道你课后有没有自己去对照着实现一下呢? 尽管单例是一个很常用的设计模式,在实际的开发中,我 阅读全文
posted @ 2023-01-06 10:16 易先讯 阅读(5) 评论(0) 推荐(0)
摘要:从今天开始,我们正式进入到设计模式的学习。我们知道,经典的设计模式有23种。其中,常用的并不是很多。据我的工作经验来看,常用的可能都不到一半。如果随便抓一个程序员,让他说一说最熟悉的3种设计模式,那其中肯定会包含今天要讲的单例模式。 网上有很多讲解单例模式的文章,但大部分都侧重讲解,如何来实现一个线 阅读全文
posted @ 2023-01-06 10:16 易先讯 阅读(10) 评论(0) 推荐(0)
摘要:上一节课中,我们针对版本1存在的问题(特别是Aggregator类、ConsoleReporter和EmailReporter类)进行了重构优化。经过重构之后,代码结构更加清晰、合理、有逻辑性。不过,在细节方面还是存在一些问题,比如ConsoleReporter、EmailReporter类仍然存在 阅读全文
posted @ 2023-01-06 10:13 易先讯 阅读(9) 评论(0) 推荐(0)
摘要:在第25节、第26节中,我们讲了如何对一个性能计数器框架进行分析、设计与实现,并且实践了之前学过的一些设计原则和设计思想。当时我们提到,小步快跑、逐步迭代是一种非常实用的开发模式。所以,针对这个框架的开发,我们分多个版本来逐步完善。 在第25、26节课中,我们实现了框架的第一个版本,它只包含最基本的 阅读全文
posted @ 2023-01-06 10:13 易先讯 阅读(7) 评论(0) 推荐(0)
摘要:到今天为止,设计原则和思想已经全部讲完了,其中包括:面向对象、设计原则、规范与重构三个模块的内容。除此之外,我们还学习了贯穿整个专栏的代码质量评判标准。专栏的进度已经接近一半,马上就要进入设计模式内容的学习了。在此之前,我先带你一块来总结回顾一下,我们已经学过的所有知识点。 今天的内容比较多,有一万 阅读全文
posted @ 2023-01-06 10:12 易先讯 阅读(4) 评论(0) 推荐(0)
摘要:平时进行软件设计开发的时候,我们除了要保证正常情况下的逻辑运行正确之外,还需要编写大量额外的代码,来处理有可能出现的异常情况,以保证代码在任何情况下,都在我们的掌控之内,不会出现非预期的运行结果。程序的bug往往都出现在一些边界条件和异常情况下,所以说,异常处理得好坏直接影响了代码的健壮性。全面、合 阅读全文
posted @ 2023-01-06 10:12 易先讯 阅读(3) 评论(0) 推荐(0)
摘要:我们可以把函数的运行结果分为两类。一类是预期的结果,也就是函数在正常情况下输出的结果。一类是非预期的结果,也就是函数在异常(或叫出错)情况下输出的结果。比如,在上一节课中,获取本机名的函数,在正常情况下,函数返回字符串格式的本机名;在异常情况下,获取本机名失败,函数返回UnknownHostExce 阅读全文
posted @ 2023-01-06 10:12 易先讯 阅读(5) 评论(0) 推荐(0)
摘要:上一节课中,我们结合ID生成器代码讲解了如何发现代码质量问题。虽然ID生成器的需求非常简单,代码行数也不多,但看似非常简单的代码,实际上还是有很多优化的空间。综合评价一下的话,小王的代码也只能算是“能用”、勉强及格。我们大部分人写出来的代码都能达到这个程度。如果想要在团队中脱颖而出,我们就不能只满足 阅读全文
posted @ 2023-01-06 10:11 易先讯 阅读(3) 评论(0) 推荐(0)
摘要:在前面几节课中,我们讲了一些跟重构相关的理论知识,比如:持续重构、单元测试、代码的可测试性、解耦、编码规范。用一句话总结一下,重构就是发现代码质量问题,并且对其进行优化的过程。 前面的内容相对还是偏理论。今天,我就借助一个大家都很熟悉的ID生成器代码,给你展示一下重构的大致过程。整个内容分为两节课。 阅读全文
posted @ 2023-01-06 10:11 易先讯 阅读(5) 评论(0) 推荐(0)
摘要:上两节课,我们讲了命名和注释、代码风格,今天我们来讲一些比较实用的编程技巧,帮你切实地提高代码可读性。这部分技巧比较琐碎,也很难罗列全面,我仅仅总结了一些我认为比较关键的,更多的技巧需要你在实践中自己慢慢总结、积累。 话不多说,让我们正式开始今天的学习吧! 1.把代码分割成更小的单元块 大部分人阅读 阅读全文
posted @ 2023-01-06 10:10 易先讯 阅读(7) 评论(0) 推荐(0)
摘要:上一节课中我们讲了命名和注释,这一节课我们来讲一下代码风格(Code Style)。说起代码风格,我们其实很难说哪种风格更好。最重要的,也是最需要我们做到的,是在团队、项目中保持风格统一,让代码像同一个人写出来的,整齐划一。这样能减少阅读干扰,提高代码的可读性。这才是我们在实际工作中想要实现的目标。 阅读全文
posted @ 2023-01-06 10:10 易先讯 阅读(3) 评论(0) 推荐(0)
摘要:前面我们讲了很多设计原则,后面还会讲到很多设计模式,利用好它们可以有效地改善代码质量。但是,这些知识的合理应用非常依赖个人经验,用不好有时候会适得其反。而我们接下来要讲的编码规范正好相反。编码规范大部分都简单明了,在代码细节方面,能立竿见影地改善质量。除此之外,我们前面也讲到,持续低层次、小规模重构 阅读全文
posted @ 2023-01-06 10:10 易先讯 阅读(2) 评论(0) 推荐(0)

上一页 1 ··· 25 26 27 28 29 30 31 32 33 ··· 45 下一页