设计模式预热一 为什么要学习设计模式

我在面试应聘者的时候,设计模式是必问的一个问题,不管是初中高级开发工程师,还是架构师,我一般会问应聘者了解哪些设计模式,让应聘者说自己擅长的模式来考察应聘者,应聘者大多只能说出简单工厂、抽象工厂、单例、代理这几种常见的模式。

但即便是这几种简单的模式,比如一个懒汉式的单例,也很少有人能完整并正确的表达出来,更有应聘者说“不了解设计模式,没什么用”,当我第一次听到这样的话的时候,是非常吃惊的,但后来随着应聘次数的增加,“设计模式无用说”却时不时就会听到。

每次听到这样的说法,我心里都非常遗憾,因为设计模式是硬实力,是程序员的内功,如果不了解设计模式,不深入学习,很难说,面前这位程序员能够写出相对简洁和优雅的代码。因为你也不想有一天,你的同事离职了,他交接给你的代码到处都是十几个if互相嵌套的代码,或者是一个方法动辄上千行,甚至5000行代码,这样的代码让谁来看,都会头大,要改也无从下手。

可能有人会说,我不会设计模式,我也没感觉怎么样,项目一样做,没有任何问题。其实并不是没有问题,而是自己不知道问题而已。

学会设计模式,能让我们的代码更健壮、更优雅,更易于扩展,可以轻松面对时常变化的需求。比如有的逻辑,就是需要多个if判断,来决定执行哪个分支,使用设计模式就可以完全消除if,而且在需求变动,需要增加其他分支逻辑的时候,只需要增加对应逻辑处理的类,而不需要大面积的去改之前的代码,这就设计模式种的一个开闭原则(向扩展开放,向修改关闭)。

这就是设计模式最直接的优势体现。

设计模式就是一个程序员的硬实力的体现,想要让自己进阶,设计模式是必学的一门课程。