编程语言应用

首页 » 常识 » 预防 » 从学功夫的角度聊聊编程工作中的设计模式
TUhjnbcbe - 2023/5/6 21:20:00
福州白癜风医院 http://baijiahao.baidu.com/s?id=1681053053973129699&wfr=spider&for=pc

无论,您是学什么编程语言,都离不开设计模式。

网上关于设计模式的评价,也是褒贬不一,各家观点不同。

但无论大家怎么争论,都改变不了面试官会考查这方面知识的事实。

既然每次面试都逃不开这个话题,那咱,就来扯一扯“设计模式”。

在小编看来,学习功夫和学习设计模式很像。

咱就从学功夫的角度来聊聊学习设计模式。

对于不会功夫的人来说,想要打倒对方,可以有很多种方式。

可以抡起拳头砸。

用脚踹。

用头撞。

甚至用牙咬。

这时候,有人会说,看,学不学功夫都无所谓,通过上面这些方式,就可以打倒对方。

是的,如果你觉得通过上面的方式可以很容易击倒对方,那学不学功夫确实无所谓了。

毕竟杀猪杀屁股,各有各的杀法。

但如果你想让自己击倒对方更轻松,更快,该怎么办呢?

方法一:不停地和别人打架,从无数次的教训中找到经验,自我总结,然后改进自己的战斗方式,从而提高战斗力。

方法二:拜访圈子里的大牛,学习别人的经验和技巧,提高战斗力。

毫无疑问,第二种显然要比第一种达成目的的速度快得多,而且吃的苦也要少一点,毕竟第一种无论从学习的时间成本,还是安全成本上来讲,都不划算!!

正是因为每个人的经验不一样,所以,每个人对功夫的理解和评价也不一样。

如果是打架经验丰富的人,看着师傅打出来的一招一式,会很有感悟,忍不住感叹“太实用了,之前我就是被这样挨打的”,因为这些招式和他平时打人的手法原理相通,一通则百通,所以学习的时候,很容易掌握,学完之后,也十分受益。

如果是没有打架经验的小白来学习,就很懵逼了,马步为啥要这样站,发力为啥要这样发,挡为什么要这样挡?我这样不行吗?我这样不是更省事吗?为啥要绕那么多的弯?

他不知道每个招式背后的原理,既没被别人打过,也没打过别人,光学会了招式,就和练习体操一样,到了实战的时候,一套招式展示下来,不仅打不倒对方,自己还累的半死,于是吐槽功夫就是花拳绣腿,毫无意义。

但学功夫,招式只是表面,思想才是其内核,你得知道为啥要有这样的动作?

只有了解其运用场景和原理,才能真正的掌握这门技艺。

下面我给您举个例子:

很多人不明白学功夫为啥要扎马步,还要腰马合一,这要是被人一脚踢裆,那不是嗝屁了吗?

其实功夫在古时候,是被用在战场上的,士兵杀死对方最快的方式,就是骑马快速将对方斩杀。

所以,士兵学习最多的功夫就是如何边骑马边用兵器击杀敌人的方法。

战马快速奔跑过程中,既要保持身体平衡,还要攻击对方,所以双腿要稳稳地夹住宽厚的马背,双脚还要牢牢踩住马蹬,这就叫马步,同时腰上发力,才能挥舞手中的长枪刺向敌人。

知道了功夫来自于战场,来自于马上作战,自然就明白了为什么古人学功夫要扎马步和腰马合一了。

再比如一些古拳法,取法于枪术,比如形意拳,讲究脱枪为拳,拳头发力时,如同将自己手中的长枪刺出去,所以拳法和枪法很多原理就很相似,如果单从拳法的角度去理解,那很多招式就理解不了。

再比如八卦掌,取法于刀法,单掌为单刀,双掌为双刀,剑法在于刺,而刀法在于劈,砍,削,了解了掌法由刀法演化而来,八卦掌中很多看似奇怪的招式也就不奇怪了。

当然,每种功夫的招式千变万化,真正实战的时候,一定是随机应变,能从学过的招式中找到合适的反击技巧,那直接使用即可,但如果没有明确的反击招式,那就需要对当时的环境和地方的特点进行分析,见招拆招,从而战胜对方。

啰嗦了这么久,其实设计模式就和功夫一样,是行业大牛们总结而来的经验。

我们在学习设计模式的时候,不需要生搬硬套,要理解其设计思想,这种写法到底是为了解决什么问题?又是运用在什么场景下?

这也是为什么很多经验丰富的老程序员看到设计模式的写法后,感叹,这不就是我们现在的写法吗?

是的,有些写法其实你自己一直在用,只是你不知道这种写法叫什么名字,其实很早别人就把它整理出来,还取了个好听的名字而已。

不经想起小时候看过的一部电视剧《侠客岛》,里面有一个场景,狗杂种与贝海石对决时,贝海石被打的口吐鲜血,惊讶地问到“你这是什么功夫?”,狗杂种说道:“我不知道,我只知道随心所欲”!

无论是功夫也好,设计模式也罢,也仅仅是为我们解决问题提供的一种思路,条条大路通罗马,至于怎么运用,要不要用,取决于用的人。如果使用的人觉得此处完全可以简简单单,那就没必要非搞得那么复杂。

好啦,说了这么多,其实就是为了引出接下来的“设计模式”的章节,今天就说这么多,敬请期待吧!!

为什么大部分程序员写不出优美的代码

扯一扯10年后程序员的出路

1
查看完整版本: 从学功夫的角度聊聊编程工作中的设计模式