关于"设计模式“

时间:2021-08-01 07:16:26
夜深了,人静了,该写点儿东西了。这是第一篇博客,写点儿对设计模式的粗浅理解吧。
 
什么是设计模式?
上学那会儿初次听到这个名字一点儿概念都没有,不知道它是用来干嘛的,感觉听上去挺抽象的一个东西。
工作了这么多年以后,我也不去引用那些随处可得的文字了,就凭自己的理解在这里瞎说一通吧,对不对您给个评论,咱们多交流。
 
先说点儿题外话,您经历过应试教育吧,经历过题海战术吧?为什么班上四五十号人,做同样的题,最后考出来的成绩不一样呢?
学霸考分高不见得他们非常聪明,但是学霸基本都有个共同点,他们非常善于总结。对于成千上百道题目,他们不是死记硬背,
而是总结规律,归纳"题型",进而举一反三。
 
上面说到了一个重要词汇,“题型”,所谓“题型”就是很多题目都可以用一个基本的方法来解决。多数人都知道设计模式那本经典名著,
作者是所谓的“*”,这四个人就是程序员里面的学霸,他们经历了无数的项目之后,发现很多项目中会遇到一些类似的问题,
然后他们对这些类似的问题进行反复研究推敲,最终找到了一些理想的解决办法,用这些方法来解决问题的好处是,可以使得软件更容易扩展和维护。
他们将这些解决办法进行了总结,起了一个高大上的名字就叫“设计模式”。其实我觉得叫“惯用法”更好理解,只不过显得不够学术。
 
为什么要学习“设计模式”呢?
我觉得主要有两个作用:
一个作用是实际应用,也就是在具体项目中遇到了类似的问题,直接套题型。当然说的简单,做到难。
实际工作中往往不是一开始就能看出需要用哪种模式的。随着需求的变更,代码会不断的迭代重构,慢慢的你可能发现事情在向你熟悉的某个模式靠近,
这时候就需要考虑一下是不是可以使用这个模式来解决问题。如果确定了能用这个模式解决,就将现有代码按照既有模式进行重构,
相应的类,变量等名字最好也一起重构,让别人一看就知道你是特意按照这个模式来设计的。
要做到这一点的前提当然是,你脑子里面要装着这些模式。
 
另一个作用是便于交流。首先我们说下其他两个类似的东西“数据结构”和“算法”,这两个东西其实也可以认为是总结性的东西,
大师们将常用的数据组织方法归纳出来形成“数据结构”,将常见问题的各种解法总结出来形成“算法”。他们三者还有一个共同点就是,
和具体的编程语言无关。“数据结构”,“算法"和“设计模式”都可以用任意一种编程语言来实现。
当我们学习了这些总结出来的东西之后,大家就能达成一个共识。比如程序员A说“这个问题我们需要用一个队列来实现”,
一个合格程序员的第一反应就是他的意思是先到的数据会被优先处理;因为假程序员B没学过数据结构,他当然就不知道人家在说什么。
同样道理,在进行方案设计讨论的时候,如果程序员A说,这个问题是个典型的“观察者模式”,我们就用这个模式来实现吧;
学过设计模式的程序员一听便知A的意图,同时大脑中已经浮现出了“观察者模式”的UML图是什么样子的;此时假程序员B当然是一脸懵B了。
 
好了,夜深了,就先说到这里,不知道您是否对“什么是设计模式”,“为社么要学习设计模式”是否有了个基本了解。