00:00
把单一职责原则的内容做一个小结,我们来看一看单一职责原则我们讲了哪些内容。OK。好,我们看一下单一值的原则,我们讲了哪些,我们新建一个章节对吧。这样建怎么建呢?我在这儿插入一个分页。小赵儿就可以了。对。设计模式的七大原则里边,我们先讲的第一个就是设计模式的目的。就是我们设计模式,它要达到一个怎样的目的,那这里呢,我给大家做了一些介绍是吧,做了介绍我们把它拿过来就可以了。啊,在这里呢,我们说到,呃,就是程序员他在写编程的时候,他面临的这个挑战,或者他要解决的问题呢,主要是要解决耦合性,类聚可维护性,可扩展重用性和灵活性,面试官如果问到呢,你也要以这几个。
01:07
这几个问题展开论述。然后呢,我在这里给同学们简单的说了一下。这几个特点就是什么叫做代码的重用性、可读性。可扩展可靠和高丽句,最后给大家分享了两个京剧对吧,一个是这句话。这句话呢,我给大家放这诶。放到这啊,一样的,放到这就行了。那这是我们说的设计模式的目的。然后呢,我在这里讲的是设计模式七大原则,到底是哪七大原则,对不对,这些这几个原则大家是要有印象的,小型面试官。问到这个问题,哪七大原则呢?我列到这里来。首先别,首先你一定要清楚的知道设计模式的原则是什么呀,它是我们程序员编程应该遵守的原则。
02:06
也是我们设计模式的基础。那说的再直接一点,就是你设计模式为什么这么去设计,你的依据又是什么?有些同学说,老师我在写代码的时候,我用的是工厂模式,很好。但别人要问你,工厂模式为什么这么去设计呢?就是因为你的工厂模式能够遵守到我们设计模式的其他原则。那这七大原则是哪七大原则,一定要有个印象,就是我们这说的所说的这七大原则立的最远。最后这个合成复用原则呢,有些书上没有列出来,因为我觉得合成复用其实是比较重要的一个原则,我单独的把它拿出来了。有些书上直接说的就是前面三种啊,前面六种好吧,这点大家理解一下,然后这个说完了过后呢,我们就讲了单一职责原则是什么。
03:01
单一职责原则,它的一个概念和它的应用,那首先我们先做了基本介绍,何为单一职责原则呢?对不对,先把这个搞清楚,所以单一职责原则,它是指的是,即一个类只应该负责。一个职责。当然这个所谓负责一个职责,并不是说只有一个方法,不要这么理解啊,有些有些同学可能说,诶老师一个类只应该负责一个职责,是不是就代表一个A类里面只能有一个方法,我没有这样讲过。他负责的是一项职责。你比如说吧,你是一个订单。那你这个这个订单这个类呢,就管订单,你就不要去管员工了。反之亦然。明白我的意思吧,好,这个什么叫做负责一项职责,他这个设计的理论基础就是他担心什么呢?担心你有多项不同的职责过后,当我们这个类发生了一个职责的变化,会影响到另外一个职责。
04:04
这就是他设计的一个核心思想,就是他理论基础。好,那么紧接着我们就举了几个应用实例,我们举了应用实例来说明了这一个。呃,什么叫做单一职责原则,我这里呢,用一个代码的演变过程。或者说使用过程做的讲解,我们先说了第一种方案,大家看。我们第一种方案呢,是这种方案。大家回忆一下啊,同学们代码都不难,我知道一点都不难,大家也听起来没有压力,只是后面综合的时候呢,你要遵守这个原则。别人问你为什么你要说出这个理论的东西,你看第一个方案,他就没有遵守单一原则,因为你这个wrong方法呀,太笼统了。你说在公路上运行,或者说你说再运行,这也不好啊。对不对,因为你这个交通工具的运行方式可能是陆海空。
05:03
那你这写写了,显然你就让一个类。和他的一个方法把所有交通工具的运行方式都管起来了。显然它违背了。单一职责原则。所以说这个方案是不行的,紧接着呢,我们做了第二一个方案,那第二个方案呢,它就是严格的遵守了我们单一职责原则,他是怎么做的呢?好,大家看到他是这样做的,他想既然你这个交通工具的run方法。是不一样的,怎么办?我就把这个类进行一个分解。把类型分解,我把原先的这个vehicle这个类分成绕陆地上跑的交通工具。天天空中飞行的交通工具,还有随你跑的交通,我分开不就完事了吗?但是这又带来一个新的问题。什么问题呢,就这种方式呢,它的改动比较大,而且你假设只有一个方法,这样改动的意义。
06:07
就是这个这个成本相对偏高,而你因为你这个方法就一个嘛,你这原先这个vehicle vehicle这个类里面就一个方法,你为了这一个方法搞出了三个类,这样呢,他觉得成本太高了,于是呢,我们可以把这个单一职责原则往下沉。就说不要在内上内这个级别做单一职责,我们在方法这个级别做单一职责也是OK的,那就产生了我们的第三一种方式,第三种方式呢,就是这样写的,来给各位朋友板书到这里。哪里,就在这。插入一个小表格,OK,把代码放进去,它这一块呢,大家可以看到这种修改方法没有对原来类做大的改进,只增加方法,虽然没有在类这个级别遵守单一,但是在方法级别上呢,仍然是遵守单一,如果我们将来在一个类里边方法比较少。
07:06
而且每个方法呢,它是有不同的业务逻辑的,记住一定给我分开,尽量不要用这种写法,什么if。如果怎么怎么样A啊,比如说有些同学经常写如果怎么怎么样,我写到上面吧。Else,怎么怎么样,Else if,然后又else if。然后又是else等等,这种写法呀,要慎用,因为一旦你写了很多if else,这种耦合性就会很高。所以说你看那些优秀的代码。大家有兴趣,后面我们还会看源码,你会发现在一些优秀的代码里面,很少用这种很多分支的,他宁愿用类来化解这个多分支。对不对。啊,是这样的一种一种逻辑,听到没有,好,这是我们讲的这个东西,最后呢,我这里做了一个小结,任何一种原则呢,都会虚,原则是死的,但是我们用的时候是活的,所以说你看我这里总结这么几句话。
08:09
单一职责原则,它是降低类的复杂度。就是我们尽量把它用不同的类来写出,第二个呢,提高我们可读性,第三个减,降低变更一个职责带来的风险。最后我说了一句话,通常情况下,我们应该严格的遵守单一职责,只有在逻辑足够简单,才可以在代码及违反。原则就是我们在类里面呢,在类这个级别我们不用,而在方法这个级别保持单一也是可以的,但是这有前提,什么前提啊,就是类的方法比较少。如果你这个类定方法有20个,30个。或者说有这个有很多方法,你就最好不要仅仅在带方法这个级别保持单一,最好把它分开。所以你看在我们很多代码里边,优秀代码里面,它的一个类,它的一个类呢,往往它是方法,它是它是分开的哦,除非这个类确实很复杂,没有办法。
09:09
但我们尽量把它分开。好,这是我们单一职责注意的事项和我们需要注意的细节,也给各位朋友板说到这里。好的。那我就写到这里来,单一职责原则需要遵守的细节一共有这么四个,是不是?四个,我给大家板一下书。好的,同学同学们,关于单一职责原则这一个内容,我们就讲到这里。
我来说两句