有用的“歪门邪道”-设计模式
kagula
2021-1-26
正文
作为十几年的程序员, 由于经常听到工厂模式, 反射调用,依赖倒转原则,那是什么鬼。我想我也要与时俱进,是吧!手头刚好有《大话设计模式》的pdf, 花了几个小时看了下, 厉害了!
第一个感叹就是, 原来我十多年写程序中用到的各种方法, 被整理出了23种设计模式。 这得多少工作量, 最糟糕的是我们写程序十几年积累的诀窍被小清新一看<<设计模式>>,几天就全学会了,砸我们老人的饭碗呢,哭死!
前段时间,参加了浙江省自学考试-离散数学的考试,题目简单的一塌糊涂,考试通过,但是分数低的让我心痛,像我四十多岁还在考试的人不多,表扬下自己。为什么这里要提离散数学呢,这是因为其中学到的知识,我在十几年编程中是无法想到的,我相信自己不是天才,所以我确信以下这些定理。
1,就算没学过设计模式,有丰富编程经验的人也会使用设计模式,只是他们不清楚工厂模式、代理模式等这些名词。
2,学习数学要比学习“设计模式”重要。
现在我来补充下定理1,举个例子,我们写代码不可避免要调用数据库,第一天被领导要求,得用Foxbase,过几天要求改用IBM DB2,那我代码就改下呗, 但是过段时间Oracle来了,崩溃,以后要是再来个MySQL我不是完蛋了,自然我们会想到为不同的数据库服务器建立驱动,然后再加个抽象类,减少重复代码,然后以后换成MySQL就不用大量修改代码,只增加点针对MySQL的特殊代码就可以了。很多数学定理是几百年人类智慧的结晶,比如说黎曼公式,七桥问题,不单能解决我编程中遇到的问题,而且不是我花几个小时,能想到的。设计模式这类的书和数学不同,我没看过设计模式,也能想到用哪种设计模式,但是数学的东西我做不到,所以学习数学更加重要。
3. 在某些情况下添加新代码比修改现有代码成本低
一个对几年前写的程序还要仔细看下代码,一个看下接口,根据接口添加下代码,然后再配置下就可以了,成本哪个更低,一目了然。但凡有点编程经验,就算他没学过设计模式也是在用设计模式这套思路在写代码,不然,工作就没办法继续了。
4. 检验数学学习成果的最好办法是考试
你看我一考就露馅了,哎!我对离散数学的掌握,远没有自己想象中的优秀。
学习《设计模式》为什么是“歪门邪道”呢?
先有需求,建立问题域模型,再映射到具体的平台,变成可以运行的软件。也就是说先有问题,再有设计模式,而不是反过来。试想一下,遇到问题,然后几十种设计模式去匹配下,那个好用就用哪个?模式匹配不需要时间?如果有比现有的模式更适合的解决办法呢?所以我说是“歪门邪道”。
为什么我说学《设计模式》有用呢?
对新人来说,就像学会了一元二次方程,学会了计算矩形的面积,圆形的面积,我内功不行,我就套呗,至少简单的问题能解决。
对老人来说,增加了同新人的沟通能力,哈哈,我知道你说的意思了,这样行!OK!
给我最大的启发就是
为什么二十年前会写QQ的程序员一大堆,就只有某人靠着QQ成功了?
为什么这么多老鸟会设计模式, 但是为什么只有写出设计模式这本书的老鸟靠设计模式发财了?
我们学这学那,不就是为了成功?为了发财?
为什么?为什么?为什么?
后言
几小时后,我把看过的有关《设计模式》的内容忘记了。。。 。。。
新人熟读《设计模式》,能说会道,是不是真的能抢走开口什么模式都说不清楚的老人的饭碗呢?拭目以待!
好吧,哎,叹口气~~~