00:00
同学们在前面学Java基础的时候呢,呃,应该说老师也提到过这个设计模式,但是因为时间的关系呢,可能设计模式讲的也不是那么的痛啊,当然有很多书也在讲这个设计模式,都显得很高大上。那么设计模式到底是个什么东西呢?我们来重点的讲一些大家将来在这个开发的时候用的比较多的设计模式啊,有些设计模式呢,其实它是有一点牵强的,而且应用场景呢,也不是那么丰富,我们讲一些重要的设计模式啊,重点来说呢,我们要讲这么一些,待会儿我会在这个讲解中说第一个我们先说一下设计模式的必要性,我这里总结了有这么几点,第一个呢,面试啊,一般都会问你几个常用的设计模式,比如说问你。这个简单工厂模式,工厂方法模式,或者是就是工厂模式有什么区,还有这个抽象工厂模式是什么区别?第二个别人问你观察者模式,装饰者模式有什么区别?
01:08
啊,别人在问你,诶什么呢,这个代理模式是怎么回事,对吧,这些用的比较多嘛。那它的模式价值又在什么地方,别人总会问两句的啊,像单利模式也是啊,你们可能前面可能也主要就学了一个单利。那么现在呢,面试要问,我们可能要去用,其实我们并不是为了面试,我们为了是工作,那么因为你在读别人源码的时候呢,尤其是读一些框架,大量就使用到设计模式,不学习,你看这些源码呢,就看的比较吃力,你看我举个例子,你看我举个例子,比如说软time,那么软time你在用的时候,如果你没有选单例,你可能很难理解别人为什么要这么去写,所以你知道这样写可以,但是你不知道人家为什么写。目的是什么,你就看不懂了,那比如说我们来看一段简单的测试代码。
02:02
好这样子啊,同学们,因为这个阿卡呢,这个我们就没讲了,说说我还回到我们以前的那一个项目工程里面去啊,这样呢,我还继续接着一个讲哈。好,这个阿卡这个呢,我就先过去了,好,我们还是建一个新的章节,我们这个章节呢,是啊,应该是第17章,好,我来新建一个章节。啊,新建一个章节来写到这里来吧。我们是17张,这个16张是干什么的啊,这是以前,呃,就留了一点尾巴,就留这吧。好,就是CHAPTER17。要请好代码呢,也比较多啊,首先我们来看一段特别简单的代码啊,特别简单代码来看一下他斯特好走一个啊走一个,那比如说现在呢,我们有一个这样的东西就是runtime对吧?啊runtime是在哪哪个包包里面啊。
03:05
是这个吗?Runtime不在这里面是吧?在哪个包。让他们算哪个包?Java点什么?浪是吧,浪包里面runtime是这个吧。啊,你们连好像连这个都忘了是吧?诶很正常啊,好往下走,那么我们看看这个run它是干什么的呢?诶你看这个runtime,你看人家这写了一个私有的对吧?诶为什么要有的,可能你要没学过,你就觉得好奇怪,对吧,然后这边还写了一个静态方法对吧?他为什么这样就返回一个cover time呢?诶你看这方,如果你学了这个单利你就知道哦,原先原来这个runtime就是个单利模式,至少你理解的层次就知道人家为什么把。这个方法做成私有的,这地方又给它做成一个,这个一看就是我们传说中的这个鄂汉式,对不对,鄂汉式的一种设计模式,然后这边呢,就直接可以返回,诶你看你看心里面就很清楚了,那这种单列模式是我们见过最简单的一种模式,各位同学他最简单了,那么复杂的代,复杂的设计模式你看都看不懂啊,复杂的设计模式你会发现真的是很厉害,比如今天我们讲的这个装饰的模式,我们要从这个代码的级别给你们演示一下为什么有。
04:21
啊,这个时候你就理解的比较清晰了啊,就知道为什么这样写确实是好啊,有些地方你不得不承认,人家写这种写法就是牛啊,就是牛,那么这个是从这可以看出来它是runtime,那么再看第三点设计模式呢,是也便于我们专业人士交流方便,比如说。两个程序员交流的时候,别人直接用就就说诶,我这个,呃,代码这边我就用到了装饰的模式,你没学过你都不好说,你可能就不吱声了,是吧,这是总是这种模式对吧,别人又说我用那个代动态代理,静态代理是吧,我还用那个防火墙代理,你不好意思说嘛,因为你不懂吗?别人因为说的很简洁,就好像你们玩游戏的人对吧,玩游戏的人可能有些术语。
05:05
对吧,玩意思他就是这个空闲人,这不好意思这个聊嘛,这不好意思说空闲什么玩意,这个没没聊不好意思聊好这个东西呢,他有一些这个这个这个专业的一些术语,这个我们专业人士用啊,别人就说模式了,那么第三一个呢,这个设计模式呢,的确它可以提高我们代码的易维护性,后面呢,大家从案例里面确实能够体验,那么这里我总结一下设计模式是什么啊,我的理解这样子的。我的理解是,即,即通用的编程应用场景的模式化、套路化。就说我们将来在这个开发中呢,会有很多场景非常非常的相通,很多项目里面都会遇到这个问题。很多在写这个代码的时候呢,他都会遇到相同的一个需求,就好比我们去装修一个房子,你肯定遇到的需求都有,比较房间很小,但是呢,我又想充分利用这个空间,诶,这就是一个。
06:09
这就是一个问题,大家都遇到怎么办呢?人家可能想一个,诶,咱们可以用这个隔空间,或者是用这个呃,增强这个空间,空间层次的这个这个方式来让我们空间看得更大等等吧,那肯定是有这样子的,所以说我是说的这个模式化,套路化,而且一定要站在软件层面去思考,这句话怎么理解呢?啊,就是我总结一句话啊,是这样子的,我曾经。跟讲这个单利模式的时候,有个学生就就上来说韩老师,我觉得单利模式一点用都没有,我说为什么呢?他说你看啊,你单列模式你说的很对确,就是整个这个程序里面只要有一个实例,不要有不要有第二个实例就可以了吗?是这意思吧。他说你你写代码小心一点就行了,还有你仔细想,他说的也是也是有道理的,你小心一点就可以了,因为我不我不去创建两个就行了,但是要要知道啊同学们那个。
07:05
同学们都知道那个交通那个那个为,为什么让你们在这个开车的人时速在在这个在这个公城市道路上不能超过40公里。有道理吧,你说我我不没事,我开快点,我小心一点就行,你把人撞死怎么办?人家这个地方不是让你小心不小心,而是直接在设计层面上就让你拿不到两个实力。啊,这个就才叫设计对不对,你不是说你小心一点啊,小心一点那就什么都可以小心一点了,他说这个呢,它是软件层面思考,所以说同学们理解一下啊,理解一下,第二个我聊了一下掌握设计模式的几个层次,简单说一下,我这五个层次呢,大家听一听。啊,我自己去整整理了一下,第一个层次呢,就是刚开始学编程的时候,听听过设计模式啊,听过他说,诶有人说设计模式了,他听过,第二个呢,呃,有很长编程经验了,比如编了两到三年,自己也写了很多代码,其中呢用到设计模式,但不知道啊,不知道设计模式啊,可能一些简单的知道。
08:11
第三层呢,学了很多设计模式,发现自己已经在用了,而且发现新的模式很好用,就发现,诶确实是带来了一些编程上效率的提高。第五四个城市阅读了别人的源码和框架。在其中看懂别人也在用设计模式,还看懂了并且能够领会设计模式的精妙和带来的好处,哎,这个就说,诶感觉到。别人也在用,我也在用,别人还发现我还看懂别人写的代码了,还觉得你家去写很好啊,就T这个城市,第五个代码写着写着自己没有意识到使用的模式,使用到艺术模式,而且熟练的写出来了,就是已经养成了一个什么呢习惯了,所以说我经常举一个例子,孤独求败的这个五重境界对吧,大家分享一下,孤独独孤求败有五个境界,大家知道吧,第一个境界是利剑啊,年轻的时候呢,就是用的这个剑特别锋利对吧啊,无坚不摧。那第二个进剑呢,就是软剑,而这剪已经有点软了,但是呢,还是很厉害啊,就是紫微软剑,第三个呢,就是重剑。
09:16
那这个时候就是重剑无锋,大巧不工,这个是很厉害了,第四个阶段呢,就是木剑,这个剑已经很轻了,呃,这个轻,但是呢,栽花,呃,摘摘花飞叶都能伤人了,对不对?第五一个,第五个音乐就是无间了,就是刚才我们说的,哎,自己也不知道自己已经开始用这个东西了,哎,就是这么一个境界啊,啊,这是这是扫地老头啊,扫地老头挺厉害的啊,好,扫地老头别管它了啊,好了,那么这个境界呢,其实只是告诉大家,我们学习的时候是有个过程的,学习过程慢慢,慢慢大家就知道设计模式的好处了。好,这是给他聊了一些这个这个概念性的东西,先截段视频。
我来说两句