如何优雅的重构你的代码之--多态和工厂模式

      昨天在简书上看到一篇关于重构逻辑代码文章,原文链接:点击打开链接

      平时我们开发过程中用的多的莫过于if...else...了吧,当判断条件小的时候还好,但是当条件越来越多的时候,再加上里面的业务代码很复杂,全都写在一起的话,估计谁都不想看下去了。

      那么,这时候我们就要考虑对代码进行重构了。所以,我们要慢慢培养写优质代码的习惯,这样才能防患于未然。

     这里稍作总结了一下重构步骤:

            1、剥离if..else..里面的业务代码

            2、抽象化到抽象类中,通过多态的特性,实现不同的形态

            3、定义工厂,把抽象类放到工厂去实现

        我们可以模拟一个业务场景,就好比火狐主页的新闻类型模块,我们就可以通过工厂的方式去生产不同的产品。工厂模式可以简单理解为:工厂接到一个生成汽车的订单,这个工厂可以生成大众、奥迪等等。工厂要做的,是明确要生产的是什么品牌的汽车,然后才去生产。

        好了,继续说一下我们的新闻模块场景。首先,我们的逻辑代码是这样的:

                如何优雅的重构你的代码之--多态和工厂模式_第1张图片

        那么第二步,我们就要把这逻辑代码里面的内容剥离出来,做成方法 :

              如何优雅的重构你的代码之--多态和工厂模式_第2张图片

              如何优雅的重构你的代码之--多态和工厂模式_第3张图片

        代结构一下子就清晰很多了,接下来呢?平时我们做的估计也就到剥离代码这一层了,那么接下来要怎么继续优化呢?

        根据刚才我们罗列的步骤,想必大家已经很清楚了,把代码写的更简洁大方,就需要用到多态的概念了。所谓多态,子类通过继承父类后,通过重写父类提供的方法,去改变父类的形态。                  如何优雅的重构你的代码之--多态和工厂模式_第4张图片

            然后我们再看看最开始的代码变成什么样了

            如何优雅的重构你的代码之--多态和工厂模式_第5张图片

        虽然用到了多态,但是我们还是得写if...else...好,既然我们不想写就把它去掉吧!哈哈,当然,我们不能影响业务啊,但是该怎么继续优化呢?能不能把逻辑判断交给谁来管理呢?

        很好,那我们就用工厂模式来管理要生产什么产品吧。你只需要告诉工厂要生产什么东西就行了,其它的都交给他。撸起袖子开干吧。

        如何优雅的重构你的代码之--多态和工厂模式_第6张图片

        然后我们再看看原来的代码,连if...else...都去掉了,以后再添加一个“科技”模块,我们就去改造工厂的具体生产机器就行了。这样的代码就很爽了。       

            如何优雅的重构你的代码之--多态和工厂模式_第7张图片

        最后附上结构图:

            如何优雅的重构你的代码之--多态和工厂模式_第8张图片

        有了工厂去管理抽象类,我们就变成提交订单的商家了,再也不用自己去造汽车。

        总结一下:工厂只管接单和管理机器,抽象类通过多态去实现生产不同的产品,就好比工厂里的机器。


你可能感兴趣的:(编写优雅代码)