学习Java设计模式的10条建议
设计模式在整个Java的学习路线图中扮演着承上启下的作用。
在整个软件生命周期中,唯一不变的就是变化。设计模式就是要在软件设计、编码中对现有问题的一种总结,并从中寻求应对变化的策略。
自己初次接触设计模式有以下几个感觉:
- 内容很抽象。
- 示例都能看得懂,但不知道实际中如何应用。
- 不理解为什么要把“好好的程序”设计成这么复杂?
站在变化的角度去看,设计模式虽然不能直接帮助你写出完美的代码,做出完美的设计。但却能从更抽象的层次去看待、预测和应对变化。
个人比较喜欢”Head First 设计模式“的讲解风格,下面是学习中总结的一些建议:
- 从实际的场景中学习:在学习每种模式时,这本书都会给出一个贯穿模式学习的示例。了解示例的需求,以及需求的演变。这即是实际开发中经常会遇到的情况,也会对自己的学习有很好地启发。
- 学完一个模式后,自己亲自动手实现这个模式:通常书本会自带示例代码,但只是阅读和运行示例代码是没有意义的。只有自己动手,从最初的需求开始,实际去编码才能有真正的收获。
- 学习新模式前,记得要复习和回顾:这个经验对于设计模式的学习是有效的。原因在于设计模式是需要不断回顾和思考的,每次地回顾即是记忆,也是总结的好机会。由于一些模式有关联,所以不断巩固和积累会越学越轻松。
- 注意总结设计原则:这是我非常喜欢这本书的一个原因。每个设计模式的背后都隐藏着一个或多个设计原则,比如”多用组合,少用继承“,”针对接口编程,不针对实现编程“。这些都是在实际的Java发中需要不断实践和牢记的原则。
- 先思考,再看解答:每个需求变化发生时,你会怎么做?这是非常好的磨练思考的机会。思考过后再看解答,不但能加深理解,还可以提出自己的见解。
- 学完一个模式,看看自己身边有哪些应用:比如学完了”装饰者模式”(Decorator),Java中有哪些这样的模式呢?学完模式后,能够加深和提高对这些API的使用吗?看看“Java与模式”,来一次纵向学习。
- 用模式的眼光来阅读代码:学习设计模式前,很多代码读起来觉得难以下手,比如eclipse的一些代码。由于运用了大量的设计模式,完全不像J2SE代码可以顺序的阅读。了解了设计模式后,会有“原来这这么解决问题的”这种感叹。接下来打算写一写eclipse中的设计模式。
- 把学到的设计模式知识将给好朋友听,或者作为学习笔记写出来:能讲清楚了,证明是真的理解了。
- 运用设计模式:注意不能滥用哦。在重构代码或者写新程序的时候,当设计完成时多问几个问题,比如需求变化要怎么应对,扩展时如何最少地改动代码。开始时会有强烈的冲动,但切记不要在生产代码上大规模使用杀伤性模式,你懂的。自己开一个小项目做做还是很不错的。
- 从设计模式开始:设计模式是在面向对象设计之上的一种抽象,同时各种框架同样也是对现实问题的抽象,你可能不会实际用到工厂模式,但其中的思想可以在各种框架设计中找到。不断地提出问题、发现问题,使用各种方式去解决,这才是设计模式真正的启发。
学习Java设计模式的10条建议的更多相关文章
- 关于Java代码优化的44条建议!
关于Java代码优化的N条建议! 本文是作者:五月的仓颉 结合自己的工作和平时学习的体验重新谈一下为什么要进行代码优化.在修改之前,作者的说法是这样的: 就像鲸鱼吃虾米一样,也许吃一个两个虾米对于鲸鱼 ...
- <转>“人脉投资”的10条建议
谁都知道人脉很重要,所以有些人非常勤奋的“做人脉”,他们往往会这样做—— 积极的参与各类线下活动,逢人就换名片.加微信. 见到名人或者重要人物必合影,而且他们还会掏出手机来给你看. 逢年过节,给所有他 ...
- 10条建议帮助你创建更好的jQuery插件
本文总结了帮助你创建更好jQuery插件的10条建议.分享给大家供大家参考.具体说明如下: 在开发过很多 jQuery 插件以后,我慢慢的摸索出了一套开发jQuery插件比较标准的结构和模式.这样我就 ...
- 如何提高Axure设计的效率 提高Axure设计效率的10条建议
如何更有效率的使用axure,这是新手需要掌握的技能.本文作者从实际经验中归纳出来的十条建议十分值得学习,转载分享给大家: Axure 是创建软件原型的快速有力的工具.上手很容易,但是,其中存在一个危 ...
- 提高Axure设计效率的10条建议
http://www.woshipm.com/ucd/92153.html Axure 是创建软件原型的快速有力的工具.上手很容易,但是,其中存在一个危险.这款软件是如此的直观以至于很多用户可以在没有 ...
- 给备战NOIP 2014 的战友们的10条建议
应老胡要求,要写10条建议= = begin 1. 注意文件关联 比如 halt 前要close(input); close(output); 还有就是一定要打这两句话= = 2. 快排,大家都懂得. ...
- 提高Axure设计效率的10条建议 (转)
Axure 是创建软件原型的快速有力的工具.上手很容易,但是,其中存在一个危险.这款软件是如此的直观以至于很多用户可以在没有接受过任何正式培训的情况下进行使用.他们可能不知道的是他们可能没有以恰当的方 ...
- Java设计模式(10)代理模式(Proxy模式)
理解并使用设计模式,能够培养我们良好的面向对象编程习惯,同时在实际应用中,可以如鱼得水,享受游刃有余的乐趣. Proxy是比较有用途的一种模式,而且变种较多,应用场合覆盖从小结构到整个系统的大结构,P ...
- 学习java设计模式有用吗?懂这六个原则,编程更轻松
学习java设计模式有用吗?懂这六个原则,编程更轻松 1.开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭.在程序需要进行拓展的时候,不能去修改原有的代码,实 ...
随机推荐
- 反编译.net dll
自己公司的程序,年代久了,没有源代码,修改一些小地方,只能反编译,还好当时没有混淆. 先ildasm 反编译. 删除 .publickey = ( ) 这段,去原来签名. 然后再用找要改的IL,这 ...
- 推荐:ThoughtWorks(中国)程序员读书雷达
部分转自张逸的博客:http://agiledon.github.io/blog/2013/04/17/thoughtworks-developer-reading-radar/ 长久以来一直对程序员 ...
- [swustoj 1091] 土豪我们做朋友吧
土豪我们做朋友吧(1091) 问题描述: 人都有缺钱的时候,缺钱的时候要是有个朋友肯帮助你,那将是一件非常幸福的事情.有N个人(编号为1到N),一开始他们互相都不认识,后来发生了M件事情,事情分为2个 ...
- 百度UEditor编辑器使用教程与使用方法
我们在做网站的时候,网站后台系统一般都会用到web编辑器,今天笔者就给大家推荐一款百度UEditor编辑器.关于这款百度UEditor编辑器官网上也有简单的教程,不过看着比较费劲,今天笔者就跟大家分享 ...
- ExpectationMaximum
2- You may have question marks in your head, especially regarding where the probabilities in the Exp ...
- 咨询内容: TF卡一定要重新买吗,为什么我的放进去读不了呢
京东回复:您好!先科(SAST) SA-992 便携数码音响 (兰色)不用重新买,但是需要您采用FAT分区重新格式化,感谢您对京东的支持!祝您购物愉快!
- VS2013 :IntelliSense: 不允许使用不完整的类型
出现上述情况,一般是存在对应的头文件,但是没有引用造成的. 引用的时候要注意头文件的顺序, 本项目中的头文件一般先引入,也就是用双引号#include "xxx.h",然后是系统中 ...
- #ifdef _cplusplus (转)
原文不可考,转载链接:http://blog.csdn.net/owldestiny/article/details/5772916 有发现原文的请告知,我会及时更新. 时常在cpp的代码之中看到这样 ...
- new和delete为什么要匹配
operator new和operator delete函数有两个重载版本: void* operator new (size_t); // allocate an object void* oper ...
- phpMyAdmin 中数据库替换问题
将原来的数据库删除,然后进入data文件夹中修改名字, 但是后来前台出现错误: Zend_Db_Statement_Exception Object ( [_previous:Zend_Excepti ...