00:00
各位来看一下我们这一个Java设计模式的授课的一些方式,我总结这么几点,大家看一下,第一个呢,我们尽量把这个课程讲的深入。成体系就是第一个呢,我们需要把它讲的深入一点,从源码的级别进行讲解,第二个呢,成体系就是我会把七大原则,就是我们设计模式里的七大原则,还有23种设计模式。23种设计模式都给他讲完。全部讲完,虽然说是23种,但其实有几种设计模式里边它包含几几个小的分类,明白我的意思吧。你比如说像工厂模式。虽然叫工厂模式,但是实际上它包含了有三种,简单工厂模式,工厂方法模式和抽象工厂模式,你再比如说我们这个适配器模式,适配器模式里面呢,虽然说是一种,但实际上里面也包含三种。所以说是这样子的一种讲法,就把它讲的很全很全,而且呢,我觉得我们在学习过程中尽量是高效而愉快的,我要阐述一个观点,就是设计模式很有用,其实也很好玩,你会发现在你学习的过程中,你会发现这个设计模式有有种什么感觉呢?就好像我们小时候搭积木。
01:18
这个搭积木呢,你在想一件什么事呢?就好像设计模式在帮我们想这样一件事情,我们怎么搭建,能够让这个积木搭建的更稳定,更坚固,更高,哎,就好像搭积木一样,就他在告诉你怎么去搭这个积木,能够让我们搭的这个积木这个房子更高,更稳定。还有一点呢,就是我要说清楚一点,就是设计模式,它因为包含了很多的编程思想在里边。它包含的编程思想比较多,所以说还是有一定难度的,你听起来呢,可能会会觉得,诶诶怎么老师讲这个点跟我想的不太一样。或者说你会觉得,诶,这个设计模式怎么这么。
02:00
这么麻烦呢,甚至你还有可能这种感觉,说老师这个设计,我觉得设计模式很无聊啊。你一个很简单的问题,为什么要去搞这么麻烦呢?这些想法都是正常的。我我们在实际开发中就说我以我的工作经验也是这样子的,有时候我会觉得,诶,实现一个功能没没必要那么麻烦呀。没有必要那么麻烦,怎么为什么他搞这么麻烦,这么啰里啰嗦的呢?我要告诉大家的是我们设计模式它要解决的问题。以及他站在的角度是不一样的,他是希望我们软件是站在一个比较大。呃,就是它具有一个更好的一个。呃,扩展性、复用性、稳定性的角度来思考的,而不仅仅站在一个功能实现的角度来思考的,我再说一遍啊,就说这个设计模式,它是站在一个软件或者叫一个一个项目,它的一个结构上。
03:01
他怎么更合理这个角度来思考问题的,而不是站在一个功能怎么去实现的角度来来来思考的,如果我们只是实现这个功能,说实话你有可能完全不需要用这个设计模式,但是你站在一个软件系统体系或者一个结构的角度来看呢,这个设计模式就比较有有意义了。在理解老师在说什么吗?所以说既然有一定难度,所以说我在讲课的时候呢,我们尽量的努力的做到通俗易懂,但仍然会有一些东西你理解起来感觉到。很很很吃力啊,这是肯定的,这必然的,但是没有关系,我们有什么问题,解决什么问题吗?好了,在讲课的时候呢,我采用的这个手法,讲课的方式是这样子的,我先提出一个应用场景。或者说我先提个问题让你们想,比如说我先提一个需求,比如说我们现在有一个有有有一个功能模块。
04:00
对吧,或者说有一个功能需要你去实现,那么你先想怎么去实现。那么这时我们先用传统的手法先实现,然后引出我们设计模式,最后再剖析这个设计模式的原理,就是这个设计模式里面有几个核心的角色,把它分析出来,把类图画出来。画出来以后呢,我再告诉大家,我准备怎么用设计模式来实现它,我会分步实现,并且画出一个图解,一般是以类图的视线类图的方式给它画出来,我准备怎么去写这个项目。或者完成这个需求,然后代码走代码,走完代码以后,这个时候你对这一个设计模式呢,就有一定的了解了。然后为了为了加深大家认识呢,我们再从再找一个框架或者一个项目的源码。去分析这个模式在什么地方用到了。打个比方吧,我们讲完这个工厂模式。
05:01
我们就会去找一个框架或者一个实际项目,我会把那个核心的代码拿出来给你们看。哦,说这里就用到了工厂模式,能理解我的意思吧,这样你通过这样一个这样一个流程呢,你会对这个设计模式有一个比较深刻的理解,我举个例子,我会怎么讲,比如说我以建造者模式会怎么讲,给大家捋一捋,我会怎么去给大家讲解这个建造者模式,大家看我讲课的一个流程。首先呢,我先提个实际需求,盖房的需求,说这里面有个盖房子,盖房子呢有各种各样的需求,要求大家用程序完成。这是需求先提出来了,那当我提出一个需求的时候,是不是作为一个听课的人来来讲,你肯定会会开始开始要思考了,你会怎么去实现对不对,所以说我会先用大家最容易想到的方式来。解决,它用传统的方式来解决。而且呢,我也会把这个类图画出来,我告诉大家,诶,一般的人会这么这么去思考,然后我把代码给他写一遍,写完了过后。
06:06
我就会开始做下一步工作了,就是传统的方式解决这个盖房问题呢,会出现什么问题,就说你用这个传统的方法是解决了。代码也是正确的,但是有什么问题呢?它必然是有问题的,对吧?这时我就提出,诶,这个问题怎么解决呢?就引出了我们要讲解的建造者模式,这样做到一种无缝接轨,大家会觉得很自然哦,原先这种方式确实有问题的。这个时候我就提出建造者模式,然后把建造者模式给大家原理做一个剖析,我说建造者模式里面有这么几个核心的角色。然后再把这个图一画。这是它的原理结构图,也叫原理类图。把这个类图的话呢,再把这个角色一分析,大家对这个建造者模式就有一种比较形象的具体的认识理解吧。
07:01
哦哦,是你大致知道诶,韩老师待会讲的建造者模式大概有这么几个角色,有product,有builder,有一个具体实现builder一个类,还有director指挥者。OK,然后你大体明白了过后,我下一步就要干什么呢?我就要用建造者模式来。重新再把盖房的这个问题重新写一遍。也就是说把传统方式改成我们的建造者模式,这个时候大家一对比。大家听到我说了一句话的对比。对比,这种对比的力量是很重要的。当你对比过后发现,哎,的确我们这种方式更好。建造的模式这种精髓的东西你就理解到位了。我们经常说说这个写法比那个写法好,是不是你经常听到这样说说张然说,诶,我的写法好,你是说我的写法好,你说谁比谁好,是不是要有对比才能体现出。如果我上来给我没有一个对比,我直接就告诉你们说同学们建造的模式就这样去写,这样挺好的,你有感受吗?
08:07
你可能会觉得这个也没啥呀。对不对,所以说我们说谁比谁好,一定是有比较的。而且这种比较呢,会让你有一个深刻的认识,就好像你说谁比谁漂亮。谁比谁帅?你是不是有个比较,你不能张三张三来,诶张三长得挺帅,其实你是说张三长得挺帅的时候,其实你在比较,你在跟谁比较呢?你可能在跟李四比较。是不是这样的道理,好,这样子大家呢,就会有一个比较深刻的认识,尽量呢,我们每一个地方就画一个图,所以这个U图呢,其实是蛮重要的,如果作为一个程序员看不懂这个UUML类图,我告诉大家你这个程序员。是有问题的。一定要看得懂啊,因为这是我们程序员沟通的一种语言。或者是一种方式,好,当我们把这个建造者模式用到了一个实际的一个需求上过后呢,我们紧接着再给大家讲建造的模式在我们SDK,或者在SSM这个框架里面,哪个地方的用到了,把源码分析出来,甚至我还会把源码里面的角色再提出来。
09:20
我会告诉诶建造者模式啊,你看告诉大家,我告诉你这里面有一个类图,我会画,画完了过后对照这个源码做一个分析。我就告诉你,在Java SDK里面呢,有一个build,这里面就用到了我们建造的模式。然后把它的源码拿出来一对比,再把这个类图一画,OK。这样子你就学的非常的深刻。非常深刻,这样你就感觉到的确我们学的这个模式啊,不是理论的东西,而是真的人家这些高手的确在用,这个时候你就会有一种很直观的一种感受,就是对你的这个,对你这个理解的层次层面呢,是不一样的。
10:01
OK,这就是我们后面要讲的。就是讲讲课的一种手法或者一种方式,大家知道老师怎么去讲,待会你听课的时候呢。老师就不反复说了,呃,我一说,哎,同学们,我下面要开始讲什么讲,你心里面就有一个框架,说老师怎么去讲的这个步骤和顺序,你就跟老师这个步调一致了,明白我的意思吧。好,这是我们讲的授课的方式和他的一个课程亮点,我把它板书到我们笔记中,笔记在哪里,在这里。是吧,刚才我们讲的是这个内容。给他来个标题。这里面呢,我们总结了有这么几点对吧,一共有六点需要同学们。注意的那设计模式,你在学的过程,你一定会觉得非常好玩。我反正我觉得是挺好玩,你我希望同学们也有这种感受,就挺好玩的。挺有意思的。好,我们写的东西就是比别人漂亮,效率就比别人高,你要有这种感受,那同学们你就学的越学越带劲,好同学们关于这个授课方式呢,就给同学们聊到这里。
我来说两句