00:00
看一下前面我们这种传统的方式解决披萨订购的方式有什么问题?那首先我们看它的优点呢,是比较好理解,也比较好容易操作,但是他的缺点是违反了我们OCP原则。及对外扩展。对修改关闭。嗯,大家有有发现一个问题啊,我们举一个例子,你就看到它这个地方呢,在一定程度上破坏了我们OCP的原则,即当我们给类增加一个新的功能的时候。我们希望尽量不要去修改代码,至少我们在使用方呢不要去。过多的修改我们的代码。但是。大家来分析,假如我们增加一个新的披萨种类,比如说我们增加一个新的种类是胡椒披萨。因为。切实披萨我已经有了,我们改成paper PE PE paper就是胡椒披萨,如果我们增加增加一个胡椒披萨,我们来看代码会修改,修改哪两个位置。首先。
01:09
同学们看。打开我们eclipse。还是看这个类图,首先你会增加一个类,这是肯定的,所以说。这个功能扩展吗?这是肯定的paper。这是我们胡椒披萨,我加一个披萨。然后呢,我让。他来继承他。对不对,我让他继承了,这个是OK的。但是大家有发现,当你增加一个披萨种类的时候,你的这个使用方,也就是orderder披萨呢,它也会做相应的变化。但是大家不要忘了,我们这个orderder披萨可能有很多地方都会都会去用,比如说这是orderder披萨一,这是orderder披萨二。还有order尔披萨山,因为你一定披萨的地方很多嘛,饭馆很多,那就意味着你你这些地方,因为你order。
02:07
Order披萨的这个店面很多,那如果是这样子的话,那就意味着这个地方也会它他肯定会用到它,它也会用到它,那这些地方是不是这些个类orderder披萨二,Order披萨三都会被修改。那也就是说因为你增加了一个胡椒披萨,导致只要是使用到的是去订购我们披萨的位置都要去改。大家先来看一下这个代码,会不会这样子呢?来,同学们看。首先呢,我在这个披萨里边,我增加一个新的披萨种类。我写一个叫paper paper。披萨PI。好,然后我让这个胡椒披萨呢,去继承我们已经写好的披萨类。这里面我们需要重写一个方法,是不是这个方法我们写写个名字叫做什么呢?OK,它就叫。
03:07
就是给胡椒。胡椒披萨。披萨准备,原材料准备准备。对吧。呃,准备原材料。OK。那这个时候,因为你这增加了一个新的披萨种类,那么我们在这个order披萨地方,我们必须加一个逻辑,不然的话,你。不知道有没有对不对,所以说我们在这呢,肯定要加一个if,加一个什么呢?如果我们order type,它ES。什么等于这个胡椒了,PEPEPE好,这时呢,我们根据它的这个信息,我们把披萨六一个cheese。对不对,哦,就是paper了,Paper。PE paper。
04:01
披萨,然后我们把名字给它设置进去,Set一个名字,比如说这个叫胡椒。Pizza。胡椒披萨。好,这就写完,那同学们看,当我们这样做完了以后呢,是事实上我们这样做完以后,我们再去运行我们这个程序是可以有一个新的。呃,披萨的种类就可以接收到了。你看我们。先写一个cheese green加EK,这是希腊披萨。然后呢,我们看胡椒披萨也可以拿到,然后呢,我们再说cheese。这是奶酪披萨也可以拿到,我们瞎说一个就退出,但问题是在哪里?同学们有发现哈,刚才我已经分析过了。因为我们将来。诶,这个怎么没有了,刚才。啊,这个这个这个类啊,就是因为我刚才没有保存,没有保存导致这那看不到了,比如这一个奥披萨二。
05:04
这还一个order披萨山。好,这个方法我不要。我把这个方法先删掉好,那么这个时候同学们,呃,可以看到,就是因为你在。你在去订购的地方很多嘛,所以说如果你这还有order披萨二,Order p萨三都要做修改,那这个修改量它就比较大了,它就比较大了,所以说我们提出一个新的观点,提出一个什么新的观点呢?大家可以看到改进的思路分析。我们说修改代码我们是可以接受的,但是如果我们在其他地方也有创建披萨的代码,就意味着也要修改。对,而创建披萨的代码呢,往往有多处,就刚才我写的order披萨。二和三。那我们是不是很简单,我们把创建披萨对象,注意听,把创建披萨这个对象封装到一个类中。
06:00
封装到一个类中,这样我们有新的披萨种类时,只需要修改该类就可以了。其他有创建披萨对象的代码就不需要修改了,这就是我们的简单工程模式。也就是说,我们通过一个简单工厂模式来对我们原有的代码进行一个改进即可完成。即可完成,那是不是简单工程模式就能搞定这个事情呢?好,那下面呢,我们就来看一下简单工厂模式怎么对我们前面这个项目进行一个改进。从而呢,我们理解简单工程模式的一个。好处。好,关于简单工厂模式的改进,我们下一个视频讲解。
我来说两句