前言
经过大约两个月的磨蹭,我终于是把设计模式打下来了。
具体详细在:http://www.cnblogs.com/linkstar/category/1087887.html
那么当我学习完成之后,所想到的第一件事,也就是你们标题上面所看到的一样
学设计模式到底有啥用啊?在我学习完成之后为了写这个总结也是抓耳挠腮了一遍
所以在此需要对学习进行一个总结,这也是一个个人的总结,如果有不对的地方也请原谅
普遍的目的
我所能想到的普遍的目的有下面几个
1、别人都说要学,别人都说好,所以我要学
2、面试会被问,所以必须学
3、读源码时看到别人在用,不学看不懂源码为什么这样写
4、我刚好看到一本设计模式的书,嗯不错,我想学学
是不是看上去都直戳你的心,好像确实是这样的
不过我可以这么说,无论你出于哪一种目的去学习,只要去学习总比不学要好,至于学了有没有用,那就是你看下去的原因咯
设计模式的作用
从书上摘话给你们看看
帮助我们将应用组织成容易了解,容易维护,具有弹性的架构,建立可维护的OO系统,要诀在于随时想到系统以后可能需要的变化以及应付变化的原则。
这么复杂的解释肯定是不愿意看了,我用我的话来总结
1、设计模式能让专业人之间交流方便,如下:
程序员A:这里我用了XXX设计模式
程序员B:那我大致了解你程序的设计思路了
2、易维护
项目经理:今天客户有这样一个需求…
程序员:明白了,这里我使用了XXX设计模式,所以改起来很快
3、设计模式是编程经验的总结
程序员A:B,你怎么想到要这样去构建你的代码
程序员B:在我学习了XXX设计模式之后,好像自然而然就感觉这样写能避免一些问题
4、学习设计模式并不是必须的
程序员A:B,你这段代码使用的是XXX设计模式对吗?
程序员B:不好意思,我没有学习过设计模式,但是我的经验告诉我是这样写的
上面就是我总结的设计模式的作用,我想聪明的你应该能理解我所表达的意思
设计模式到底怎么用
我想很多人关心这个问题,确实我很关心,不然总感觉自己学习完成之后,跟没有学没什么区别
首先我不想和别人说的一样:“设计模式是一种思想,是一种经验,你写多了自然就明白了”
我不否认,但是我觉得不是干货,听了总很难过。
所以我总结了我自己的用法
1、如果你处于黄金级别(下面有提到)请在优化代码的时候再使用设计模式!!!
我的理解是这样的,首先在此,你对设计模式的理解并不是很深入,如果直接拿来用,可能会导致很多问题。所以你在写代码的时候,宁可忘记你学过设计模式,然后你自己去写。当你写完了之后,你需要对你的代码进行优化,那么这个时候你就需要尝试去找问题了。在你的代码中是否有很多重复片段,是否有很多冗长的代码,一个类的职责是否过多,如果客户提出修改你的代码是否能进行维护和修改。此时你如果你发现有地方需要进行优化,而优化的方式有所参考的话,你就可以进行使用了。
这样的好处是,你明显能感觉到使用设计模式前后,你代码的变化,以及这个设计模式的好处,在以后的工作中就有经验了。
当然不好的地方是,明显很累嘛,但是前期吃点苦,我觉得踩踩坑也没什么不好的。当然如果你是高手,那当这条没看到~
2、请使用设计模式的专有命名
比如说,在一个地方你需要使用工厂模式,那么你就在工厂类的名字后面加Factory,其他的设计模式也是类似的
一个是为了你自己以后维护的方便,一个是为了别人协同工作的时候阅读你代码的方便,这样你们交流就有了共同的语言
3、明白设计模式的作用,参考别人代码中去使用会很有效
如果你在使用一个设计模式前,请明白这个设计模式的作用是什么
再者,如:当你看到MyBatis源码中产生SqlSession对象使用工厂模式,那么你先去想为什么它要这么做,这样做的好处是什么,你的业务是否也是和他相同的状况呢?
当你了解了环境之后,你使用设计模式会变得非常有效
4、设计模式多用于复杂系统,方法设计,负责业务逻辑,增加代码可维护性方面
你学习了这么多东西,你肯定会说,我在实际中也没见到什么人在他的代码中使用设计模式呀。
确实在实际的项目中,其实如果不是非常复杂的项目基本上用不到设计模式,也没有什么特别的必要,很多时候,设计模式会出现在上面所说的情况下,所以你也不需要奇怪。
渐渐的你有一天就会明白它的存在。
学习设计模式的几个阶段
1、青铜:刚开始学编程不久,听说过什么是设计模式
2、白银:有很长时间的编程经验,自己写了很多代码,其中用到了设计模式,但是自己却不知道
3、黄金:学习过了设计模式,发现,哇,原来我已经在使用了,并且发现了一些新的模式挺好用的
4、铂金:阅读了很多别人写的源码,在其中看到别人设计模式精彩的使用所以学习了下来
5、钻石:代码写着写着,自己都没有意识到使用了设计模式,就熟练的写了下去
学习的时间
这个也只是我个人认为的比较好的学习时间,仅供参考
面向对象思想扎实,且对于程序设计有自己认识看法的时候
能熟练使用别人的框架做一些简单的项目
有过至少一个自己的完整项目
想进一步提升自己代码认识水平能力的时候
学习的方式
1、首先通过书本,或者博客,了解熟知常见的设计模式
2、自己尝试写出关于这个设计模式的例子
3、尝试在别人的代码中找到这样的设计模式进行学习
4、积累
正所谓“不积跬步,无以至千里”学习是一个积累的过程。
之后这个设计模式这个分类讲慢慢整理我在阅读源码中所遇到的设计模式。争取不断更咯~
作者:LinkinStar