有没有用,得看你的程度、你主要解决什么问题、你负责的部份而定。


若你的程度还没到那(还在学习怎么编程阶段),看了自然懵逼;

若你负责或参与应用框架(全部或其中一小部份),或与其相关,那帮助就大了。


当然,若你程度还不到,你也可以藉由学习设计模式使自己提升程度,

但得一步一步来,急不得。

一般先从某个与你要处理的问题相关,常会遇到的模式开始学起,一次学一个

(除非你念书时期就发现自己很适合先学全再用,我就不是,所以我选择一次学一个)。

你仔细看,网上查一查,大部份的人说起设计模式,都只会说出其中一两个,就明白了。


网上看到的,大部份人最常提的是单例、工厂……这几个,

我不是从这几个学的,因此我最常提的不是这几个。


我第一个学会、工作中最常用,也最常要求下属使用的,是“策略模式”

因为我们经常要处理“一个问题,两种实现”的情况,

比如一个功能,要求既要支持串口通信,又要支持TCP通信(或者既要支持Windows又要支持Linux,写法还不一样),而对调用方来说最好不要知道它们的区别

这就是典型的策略模式场景。

这种场景,一年遇到个十来次再正常不过,

因此不可能不学,也不可能学不会。


遇到这种问题,我要求他们用“策略模式”解决

我不会再说太多,只说这四个字(例如:这里使用“策略模式”以支持串口或TCP调用

我要求他们:我说这四个字,他们就要明白什么意思以及怎么做,我直接要结果。

刚开始他们听到我这么说也是很懵逼,很痛苦,

我逼他们学,通常一晚上就会了(策略模式的概念一点不难),

当然实际吃透得折腾好几次,但我上面说了,一年遇到十来次嘛,他们总会学会。


人生中学习第一个模式,肯定很难。时间久了他们习惯我这么指示,就好了。

等他们习惯第一个模式,我便开始增加他们会的模式,通常是实际用到时才要求他们学。

一年下来,他们平均会3个。(忘了说,他们都是刚工作第1至2年的程度)

在我公司,他们一般最早学会的,是策略模式、观察者模式(又称做“事件”机制)和适配器模式。


在交待工作时,我这么说:

这问题,用“事件”的方式处理,以达到………效果;

或者:

这个类提供“事件”让别的类调用;


别看“事件”简单,刚进公司的,有的人至少得折腾四到五回,才终于明白怎么做。

第一次学,至少得回家想(一边百度)3-4天才有点明白。

有一个新员工,我要求他用事件机制解决,前2-3次还会有点耐性的指导,

到第4次如果他还不会,我就会发火,然后再看,他就会了。(对!发火是故意的,给他压力)


这就是他们学习前几个模式并能应用的实际情况了。

这期间大约一年。


到此,你大概明白“怎么学习设计模式”了吗?


当然,每个人的情况不同,学习过程不一定是这样,

关键点是只要你在这行,一般一定用得到其中几个模式,

等你学会几个,并且常用,时间久了自然就明白了


另外,上面举的例子应该可以概略地看出我们公司是怎么“用设计模式解决具体问题”的吧!?

那你觉得设计模式有没有用?